Klassen mit Suffix hinter @-Zeichen

xm22

Mitglied
Hallo,

ich suche jetzt schon einige Zeit, finde aber vermutlich die passende Frage nicht: Ich habe von Zeit zu Zeit z. B. bei der Ausgabe über stdout Klassennamen, die ein @-Zeichen gefolgt von einem Hash am Ende haben. Was hat das zu bedeuten? Zuerst dachte ich, das seien vielleicht Proxy-Klassen.

Ich habe allerdings eine Methode, die Objekte eines abstrakten Typs entgegen nimmt und per Deklaration Objekte diesen Typs zurück gibt. Zur Laufzeit sind das natürlich Objekte von abgeleiteten Klassen. Und diese zurück gegebenen Objekt haben ebenfalls dieses suffix im Klassennamen.
 
Ja, ich benutze Spring. Das seltsame ist aber, dass bei der oben von mir beschriebenen Konstellation der Klassenname innerhalb der Methode noch korrekt ist. Erst außerhalb ändert er sich. Passiert so was vielleicht durch Casting?
 
Casting ist nur eine Zusicherung für den Compiler. Möglicherweise handelt es sich bei den "komischen" Klassen um Wrapper, die die "richtigen" kapseln. Ich weiß nicht, wie cglib arbeitet (wenn es das überhaupt ist).
 
Sicher, dass das nicht die Default-Implementierung der toString() Methode von Object ist?

Java:
public String toString() {
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
 
Der Wert kommt auf jeden Fall über ein System.out.println(obj.getClass()), also wird wohl die toString-Methode benutzt werden.. Aber wieso wird diese Implementierung dann nur an der einen Stelle und nicht schon vorher benutzt..?
 

Zurück
Oben