Die Klasse Class überschreibt die Methode toString() und greift dabei auf getName() zurück. toString() fügt zusätzlich Informationen über die Art des repräsentierten Typs (normale Klasse, Schnittstelle oder primitiver Datentyp) ein. Neu in Java 8 ist toGenericString(), was auch noch in spitzen Klammern die Typvariablen anzeigt. (Natürlich nicht den Typparameter, da der zur Laufzeit wegen der Typlöschung nicht bekannt ist.) Um die Typvariable zu erfragen wird getTypeName() verwendet; die Methode ist eine Implementierung aus der Schnittstelle Type, die Class implementiert.
Beispiel: Teste für ein Class-Objekt die drei String-Repräsentationen:
Class<?> c = HashMap.class;
System.out.println( c.getName() ); // java.util.HashMap
System.out.println( c.toString() ); // class java.util.HashMap
System.out.println( c.toGenericString() ); // public class java.util.HashMap<K,V>
Bei inneren Typen trennt ein $ bei der String-Repräsentation den äußeren und inneren Typ. Anders verhält sich getCanonicalName(), wie das Beispiel zeigt:
Anweisung |
Rückgabe |
Map.Entry.class.getName() |
java.util.Map$Entry |
Map.Entry.class.getCanonicalName() |
java.util.Map.Entry |
Map.Entry.class.toString() |
interface java.util.Map$Entry |
Map.Entry.class.toGenericString() |
public abstract static interface java.util.Map$Entry<K,V> |
String-Repräsentation bei inneren Typen