Java Reference
In-Depth Information
Die Pfeile in Bild 2.1 bedeuten zum Beispiel, dass die Klasse Class die Schnittstellen Gene-
ricDeclaration und Type implementiert, während die Schnittstelle TypeVariable aus der
Schnittstelle Type abgeleitet ist.
In Bild 2.2 ist zusätzlich dargestellt, welchen Rückgabetyp die im Text erwähnten Methoden
besitzen (wieder ohne GenericArrayType). Die Pfeile sind mit den Methodennamen beschrif-
tet. Ein Pfeil geht von der Klasse oder Schnittstelle weg, in der sich die Methode befi ndet.
Sie endet an der Schnittstelle, die den Rückgabetyp der betreff enden Methode darstellt.
Wenn der Rückgabetyp ein Feld der entsprechenden Schnittstelle ist, so ist ein Stern in der
Nähe der Pfeilspitze zu fi nden. Man sieht also beispielsweise, dass die Schnittstelle Type-
Variable die Methode getBounds mit dem Rückgabetyp Type[] besitzt.
Type
*
*
*
getActual-
TypeArguments
getRaw-
Type
getLowerBounds
getUpperBounds
getBounds
GenericDeclaraon
TypeVariable
ParameterizedType
WildcardType
*
getTypeParameters
Bild 2.2 Einige Methoden des Refl ection-Typsystems und deren Rückgabetyp
2.2.2 Zusätzliche Methoden in Refl ection-Klassen
Die Klasse Class besitzt zusätzlich zu den „alten“ Methoden getSuperclass und getInter-
faces (Rückgabetyp Class<?> bzw. Class<?>[]), die es aus Kompatibilitätsgründen weiterhin
gibt, nun auch die Methoden getGenericSuperclass und getGenericInterfaces. Entsprechen-
des gilt für die Klassen Field, Constructor und Method. Field hat außer getType jetzt auch
noch getGenericType. Constructor und Method haben neben getParameterTypes und getEx-
ceptionTypes jetzt auch noch getGenericParameterTypes und getGenericExceptionTypes.
Method hat zusätzlich noch zu getReturnType die Methode getGenericReturnType (der
Rückgabetyp aller erwähnten Methoden ist Type bzw. Type[]). Dass die beiden Klassen
Constructor und Method die Methode getTypeParameters (Rückgabetyp TypeVariable[])
besitzen, weil sie die Schnittstelle GenericDeclaration implementieren, wurde zuvor schon
erwähnt.
2.2.3 Beispiel
Das Programm aus Listing 2.1 kann nun so abgeändert werden, dass bei der Untersuchung
einer Klasse immer die generischen Varianten der Refl ection-Methoden verwendet werden
(also z. B. getGenericParameterTypes statt getParameterTypes). Diese Änderung ist relativ
einfach vorzunehmen. Da der Unterschied zwischen den Methoden mit und ohne „Declared“
im Namen schon durch die Ausgaben des Programms von Listing 2.1 deutlich geworden sein
sollte, werden im folgenden Programm in Listing 2.3 nur noch die Declared-Varianten
 
Search WWH ::




Custom Search