2010-11-25 11 views
3

Gibt es Weg, wie Instanznummer oder ID zu bekommen, ich meine, was Sie in Eclipse sehen können Debug> Variablen Fenster nach dem Klassennamen in Wertspalte.Wie bekomme ich Instanznummer

Dank

+0

Ich glaube, dass Nummer ist nur die Speicheradresse des Objekts. 'hashCode' könnte diese Nummer oder eine Munged-Version davon zurückgeben. – cdhowie

+0

mögliche Duplikate von [Java-Objekt-ID in jvm] (http://stackoverflow.com/questions/3289550/java-object-id-in-jvm) – nos

+1

Ich meine nicht Speicheradresse, ich meine die Anzahl der Instanzen nicht Objekt. Es ist möglich, dass die Nummer von Eclipse generiert wird. – liborw

Antwort

1

standardmäßig Debugger zeigt Ihnen das Ergebnis der toString() Methode mit dem hashCode des Objekts. Sie können also den Wert sehen, indem Sie die Methode hashCode() ausführen.

5

Siehe System.identityHashCode, die die Zahl zurückgibt, die zurückgegeben würde, wenn Object.hashCode nicht für ein Objekt außer Kraft gesetzt wurde. Es ist kein perfekter Proxy für die Identität, da mehrere Objekte den gleichen Identitätshash-Code haben können, aber es ist sehr nützlich für das Debugging.

0

Ich nehme an, Sie sind auf Objekte beziehen toString() -Implementierung .:

return getClass().getName() + "@" + Integer.toHexString(hashCode()); 
0

Vielleicht bin ich falsch, aber ich glaube nicht, Instanzen einer Klasse gezählt sind. Ich habe viele Male nach einer Möglichkeit gesucht, Instanzen einer bestimmten Klasse zu bekommen, und nach meinen Recherchen wäre das unmöglich. Instanzen haben eine Adresse, aber ich sehe keine Verwendung für eine Klasseninstanznummer (Objekte sind nicht nach Klasse im Speicher AFAIK sortiert). Beachten Sie, dass Sie immer einen Mechanismus erstellen können, um den Instanzen einer bestimmten Klasse Zahlen zu geben. Haben Sie eine statische Anzahl in der Klasse und geben Sie jeder neu erstellten Instanz (im Konstruktor) ihren Wert und erhöhen Sie sie jedes Mal. Das wäre eine Möglichkeit, Instanzen zu unterscheiden.