Generics für Methode

Hatschi

Aktives Mitglied
ich brauche einen kreativen Kopf:
ich habe eine Methode und der will ich Ojekte übergeben. Dummerweise sollen das verschiedene sein aber ich muss innerhalb der Methode nochmal wissen was für Objekte das sind.

Also: sowas wie
Java:
? lorem(? object) {
	return ?
}
ich kann jetzt ja für das ? nicht einfach Object schreiben, sonst würde mir ja immer "Object" zurückgegeben werden...
ich brauche also so was wie Generics, die sich aber nur auf ne Methode beziehen und die für jeden Eintrag anders sein kann...
Versteht mich irgendwer?
 

Hatschi

Aktives Mitglied
Java:
protected <T extends RMC> void export(String name, T rmc) throws RemoteException {
	T exportObject = (T)UnicastRemoteObject.exportObject(rmc, 0);
	T stub = exportObject;
	exportedObjects.add((RMC)rmc);
	registry.rebind(name, stub);
}

jetzt gibt mir mein Eclipse als Warnung: "type safety: unchecked cast from Remote to T" und empfiehlt mir über die Methode
Code:
@SuppressWarnings("unchecked")
zu schreiben...
wuäh?

außerdem müsste ich doch jetzt die Methode zB so aufrufen
Java:
export<Server>("server", server)
aber das will das nicht...
 

faetzminator

Gesperrter Benutzer
Warum brauchst du hier Generics? Warum nicht einfach
Java:
protected void export(String name, RMC rmc) throws RemoteException {
    RMC exportObject = (RMC) UnicastRemoteObject.exportObject(rmc, 0);
    exportedObjects.add(rmc);
    registry.rebind(name, exportObject);
}
 

musiKk

Top Contributor
Mal ganz abgesehen von faetzminators Beitrag (Generics könnten hier in der Tat überflüssig sein)...

jetzt gibt mir mein Eclipse als Warnung: "type safety: unchecked cast from Remote to T" und empfiehlt mir über die Methode
Code:
@SuppressWarnings("unchecked")
zu schreiben...
wuäh?

Zur Laufzeit ist nicht mehr bekannt, welche Typen bei den Generics verwendet werden, da steht nur noch [c]Object[/c]. Wenn Du dort castest, musst Du Dir sicher sein, dass es stimmt und die Warning lässt sich auch nur mit der vorgeschlagenen Annotation entfernen.

außerdem müsste ich doch jetzt die Methode zB so aufrufen
Java:
export<Server>("server", server)
aber das will das nicht...

Das [c]<Server>[/c] kann weg. Man kann den Typen aber auch selbst angeben. Ich verweise mal zur vielverlinkten Angelika Langer. Offensichtlich muss der Typ zwischen Punkt und Methodenname und das klappt nur, wenn man etwas "links vom Punkt hat". Also Klasse bei statischen und Variable bei nicht-statischen Methoden.
 

Hatschi

Aktives Mitglied
wenn ich dann aber "RMC" schreibe, kann ich dann auch noch auf die ganzen Methoden von "Server" zugreifen? RMC ist ja nur ein Interface...
 

faetzminator

Gesperrter Benutzer
Natürlich, solange du nur definierte Methoden von RMC verwenden willst (also bekannte Methoden). Hier fehlt wohl grundlegendes OO-Verständnis. Les dir nochmals aus dem Java-Buch deiner Wahl die ersten paar Kapitel durch und/oder such und/oder schreib dir Codebeispiele.
 

musiKk

Top Contributor
Wieso übergibst Du denn ein RMC-Objekt, wenn Du eigentlich ein Server-Objekt brauchst? Offensichtlich hat Server mehr Methoden als RMC vorgibt (auch wenn das oben noch anders aussah). Ist jetzt nur geraten... ich weiß ja nicht, wie es den anderen geht, aber ich kann mit den erwähnten Klassen und Interfaces nichts anfangen.

In dem Fall steht dann allerdings [c]RMC[/c] nach dem Type Erasure.

D'Oh.
 

Hatschi

Aktives Mitglied
aber genau das war doch mein Frage.... ich will dem eben verschieden Objekte übergeben, muss aber in der Methode voll drauf zugreifen können, bzw. ich brauch das ja nur zum Casten, aber ich muss das ja "vollwertig" casten und nicht nur mit dem RMC, das reicht nicht...
 

Antoras

Top Contributor
So wie du das dir vorstellt ist das leider nicht möglich. Du kannst ohne Cast niemals auf Methoden eines RMC implementierenden Objekts zugreifen.

Die einzige Möglichkeit, die ich sehe, ist das mit instanceof zu lösen:

Java:
public <T extends RMC> void doSomething(T rmc) {
  rmc.doSomethingOfRMC();
  if (rmc instanceof Server) {
    ((Server) rmc).doSomethingOfServer();
  }
  if (rmc instanceof Client) {
    ((Client) rmc).doSomethingOfClient();
  }
}
Das wird aber schnell unübersichtlich, vor allem dann wenn es viele Objekte gibt, die das Interface implementieren.
 

Wortraum

Bekanntes Mitglied
Habe ich etwas entscheidendes übersehen, oder warum schlagt ihr nicht einfach überladene Methoden vor?
Java:
public void doSomething(Server server){
    server.doSomethingOfServer();
}

public void doSomething(Client client) {
    client.doSomethingOfClient();
}

@Hatschi:
Alles, was nach seinem Vorschlag in der Diskussion folgt. Du sagtest doch selbst, daß Du eigentlich unterschiedliche Objekte mit unterschiedlichen Methoden übergeben willst; dann nimmt man auch unterschiedliche Methoden, die entsprechend des übergebenen Objektes das richtige machen.

Generische Programmierung ist eher das umgekehrte: verschiedene Objekte, mit denen man das gleiche machen möchte.
 

Hatschi

Aktives Mitglied
geht leider nicht... ich weiß nicht was der mir alles übergibt. Ich hab das in der abstrakten Klasse drin stehen... Was ich vorhab:
ich will ein kleines ServerModel schreiben, sodass ich später nur noch sagen muss "extends ServerModel" und dann nur noch zB export("adder", new AdderImpl()) oder sowas.

Und die Liste die ich danach anfertige, die ist dazu da, das ich in ner shutdown() die alle unexporten kann....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Neumi5694 Interface Generics für Enum-Filterung verwenden Allgemeine Java-Themen 5
B hashtable für unterschiedliche Typen - mit Generics Allgemeine Java-Themen 8
J Best Practice Generics mit Enum Allgemeine Java-Themen 3
H Kombination Interface und Abstrakte Klasse bei Generics Allgemeine Java-Themen 3
Zeppi Cast Object in Generics Allgemeine Java-Themen 4
P Generics und Arrays Allgemeine Java-Themen 6
M Generics / Typen Allgemeine Java-Themen 1
Kirby.exe InsertionSort mit Generics Allgemeine Java-Themen 33
Kirby.exe Vererbung bei Generics Allgemeine Java-Themen 7
H Klarnamen etc... (von Wie Generics lernen?) Allgemeine Java-Themen 26
D Wie Generics lernen? Allgemeine Java-Themen 26
L Compiler-Fehler Generics beim Anhängen von Predicates Allgemeine Java-Themen 1
W Vererbung Generics - mal wieder die verhaßte Rückwärtskompatibilität Allgemeine Java-Themen 2
S Verstaendnisfrage Generics Allgemeine Java-Themen 19
W Generics + Vererbung Allgemeine Java-Themen 47
I Methoden Generics-Methode Allgemeine Java-Themen 3
D Mit Generics arbeiten - Übungsaufgabe Allgemeine Java-Themen 3
K Factory Pattern: Mit Generics umgehen Allgemeine Java-Themen 6
G Generics Allgemeine Java-Themen 31
perlenfischer1984 Liste mit generics zurück liefern Allgemeine Java-Themen 8
Hacer Generics & Collections Allgemeine Java-Themen 8
H Collector Generics Problem (incl. Stream & Lambda) Allgemeine Java-Themen 4
C Gemeinsame Oberklasse zweier Generics Allgemeine Java-Themen 10
erdmann Datentypen Methodendeklaration mit Generics Allgemeine Java-Themen 2
Z Datentypen Verschachtelte Generics Allgemeine Java-Themen 1
Neumi5694 Datentypen Generics Allgemeine Java-Themen 5
S Mit Generics Klasse erstellen die selbst T erweitert..? Allgemeine Java-Themen 4
Tarrew Generics - Type erasure Allgemeine Java-Themen 5
N Problem mit Generics und Interface Allgemeine Java-Themen 4
H Generics als Parameter Allgemeine Java-Themen 1
kaoZ Generics und Vererbung Allgemeine Java-Themen 3
A Datentypen Generics: Wie am besten auf Typparameter zugreifen Allgemeine Java-Themen 2
C Generics Objekt in ArrayList Allgemeine Java-Themen 2
vandread Kleine Generics Aufgabe aus einer Prüfung... wie ist das gemeint? Allgemeine Java-Themen 6
G Generics sind zu streng - oder ich zu naiv? Allgemeine Java-Themen 3
G Verschachtelte Generics Allgemeine Java-Themen 2
O Generics Allgemeine Java-Themen 42
M Problem mit Generics Allgemeine Java-Themen 10
M Generics (bounded wildcards statt Interface Bezeichnern) -- Sinn oder Unsinn? Allgemeine Java-Themen 2
darekkay Generics: Wildcard und Object Allgemeine Java-Themen 5
H Collections Generics und Reflection Allgemeine Java-Themen 6
F Google Guice + Generics + Vererbung Allgemeine Java-Themen 5
H Problem mit Java Generics Allgemeine Java-Themen 6
J Generics: Typparameter als Klasse zurückliefern Allgemeine Java-Themen 4
H Generics Allgemeine Java-Themen 5
P Probleme mit Generics Allgemeine Java-Themen 5
B Generics und primitve arrays Allgemeine Java-Themen 6
M Generics Allgemeine Java-Themen 11
1 Collections Generics, internes Verhalten Allgemeine Java-Themen 16
T Warnungsfreie Verwendung von Generics Allgemeine Java-Themen 11
M Probleme mit Generics Allgemeine Java-Themen 5
D Java Generics Allgemeine Java-Themen 8
2 Generics: bounded wildcards Allgemeine Java-Themen 4
J Generics / vermeiden von downcasts Allgemeine Java-Themen 2
2 Generics oder nicht? Allgemeine Java-Themen 8
E Problem mit Generics und Comparable Allgemeine Java-Themen 16
W Erweitern einer Klasse mit Generics Allgemeine Java-Themen 8
N Überladen mit Hilfe von Generics Allgemeine Java-Themen 3
S Generics: Fuer Set<T> ein T-Klassenobjekt erhalten? Allgemeine Java-Themen 3
Q Der innere Typ von Generics? Allgemeine Java-Themen 3
N Generics-NullpointerException Allgemeine Java-Themen 7
2 Generics - Typ Allgemeine Java-Themen 12
P Generics Problem Allgemeine Java-Themen 10
S Type safety Warnings beim casten von Generics Allgemeine Java-Themen 6
N Generics Allgemeine Java-Themen 3
V Frage zu Generics Allgemeine Java-Themen 2
S java generics klassen deklaration Allgemeine Java-Themen 7
E Generics Allgemeine Java-Themen 3
MQue Generics Allgemeine Java-Themen 4
R Problem mit Reflection und Generics Allgemeine Java-Themen 3
C Klassen, die aufeinander verweisen (mit Generics) Allgemeine Java-Themen 16
G Generics - W.card unter Nutzung von Annotationsklasse? Allgemeine Java-Themen 6
G sortieren von generics Allgemeine Java-Themen 10
G Generics in Map. Type of value abhängig vom key Allgemeine Java-Themen 3
A Generics Verständnisfrage Allgemeine Java-Themen 7
Z Generics funzt nicht? Allgemeine Java-Themen 2
T Generics Allgemeine Java-Themen 18
G ComboBox: Nur eine Art Klasse zulassen (Generics) Allgemeine Java-Themen 3
J Generics Expertenwissen? Allgemeine Java-Themen 5
S Generics-Problem Allgemeine Java-Themen 3
T Generics und Wil-dcards Allgemeine Java-Themen 8
Q Typen von Generics & Casten Allgemeine Java-Themen 3
S Generics Allgemeine Java-Themen 2
R Problem mit Generics Allgemeine Java-Themen 2
G Trotz Generics Cast-Fehler! Allgemeine Java-Themen 5
T TreeMap durch Comparator mit Generics sortieren Allgemeine Java-Themen 9
T Generics und instanceof Allgemeine Java-Themen 10
T Generics und Exceptions Allgemeine Java-Themen 6
M Beliebig viele Typen bei Generics Allgemeine Java-Themen 3
G Reflection objekt mit generics erzeugen Allgemeine Java-Themen 5
S Singleton Pattern mit Generics Allgemeine Java-Themen 4
G Generics und Comparable Allgemeine Java-Themen 11
H Generics Problem Allgemeine Java-Themen 3
F Generics: spricht etwas dagegen raw types zu verwenden? Allgemeine Java-Themen 31
M Generics - besser programmieren, Warnung umgehen Allgemeine Java-Themen 4
E Java, UML, Generics Allgemeine Java-Themen 6
P Array von Vectoren + Generics Allgemeine Java-Themen 6
M ArrayList erweitern - generics Allgemeine Java-Themen 4
E Generics -> UML Allgemeine Java-Themen 4
G Generics: Instanzieren einer Klasse in einer Methode. Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben