Java Reference
In-Depth Information
{
...
}
}
Selbstverständlich kann eine generische Methode genau wie eine generische Klasse mehr
als einen Typparameter haben.
Ein interessantes Beispiel einer generischen Methode stellt das folgende Beispiel dar:
class X<T> {}
class Y
{
public static <T> X<T> newInstance()
{
return new X<T>();
}
}
In diesem Beispiel kann der konkrete Typparameter nicht aus den Parametern gefolgert
werden, da die Methode newInstance parameterlos ist. Möglich sind dann z. B. die folgenden
Methodenaufrufe:
X<Integer> x1 = Y.newInstance();
X<String> x2 = Y.newInstance();
Vielleicht überraschend ist auch dieses möglich:
X<?> x3 = Y.newInstance();
Wir haben nun einige Beispiele generischer Methoden gesehen, die static waren. Dies ist
kein Widerspruch zu den Bemerkungen am Ende von Abschnitt 1.3, wonach Typparameter
im Zusammenhang mit static nicht verwendet werden dürfen. Diese Bemerkung bezog sich
auf Typparameter von Klassen, während es sich bei den letzten Beispielen um Typparame-
ter von Methoden handelte.
1 9 Ü berladen und Überschreiben
Ich hatte zu Beginn dieses Kapitels erwähnt, dass Generics eine Reihe von Konsequenzen
für Java bringen. Sollte Sie das bisher Gesagte noch nicht genügend überzeugt haben, soll
nun als weitere Argumentationshilfe für die durch Generics entstehende Komplexität zum
Abschluss dieses Kapitels ein kleiner Blick auf das Überladen und Überschreiben von
Methoden im Zusammenhang mit Generics geworfen werden. Zum Einstieg soll das Thema
Überladen und Überschreiben kurz wiederholt werden. Im ersten Beispiel wird die Methode
m in der Klasse X2 überladen, denn es gibt zwei Methoden namens m (eine wird von X1
geerbt, eine ist in X2 defi niert), die sich durch die Typen ihrer Parameter unterscheiden:
class A {}
class B extends A {}
 
Search WWH ::




Custom Search