toString(), toGenericString(), getCanonicalName() in Class

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

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert