Предполагаю, что они имеют внутреннее значение IdentityHashMap<Object, Integer>
, присваивая уникальное (но бессмысленное другое) целое число для каждого объекта. Это должно быть внутренним для отладчика eclipse (а не специального идентификатора, который есть у объектов), спрашиваете, как это сделать?
Edit: Я хотел бы создать контрольную точку, как это (обратите внимание, я не очень хорошо разбираются в затмении):
- Я бы начальную точку останова (например, тот, который вы использовали, чтобы взять скриншот), и напечатайте
System.identityHashCode(object)
объекта, который меня интересует.
- Тогда я бы создал точку останова, используя условие
System.identityHashCode(object) == <whatever number you saw at the previous step>
. Было бы очень редко останавливаться на неправильном объекте.
Или, если объект, который вы заинтересованы в имеет соответствующее toString()
представление можно использовать, вы можете попробовать, что вместо System.identityHashCode(object)
. Во всех случаях вам не нужно полагаться на идентификатор внутреннего объекта eclipse, но захватывать такой «id» (или почти), который вы можете получить из самого объекта.
Как правило, я отлаживаю приложение и хотел бы собирать некоторую информацию об объектах несколько раз во время выполнения процесса - остановиться в точке останова и получить информацию о том, какой путь объекта через вызовы функций ... – Gorbush
+1 Я думаю это правильно, номера, по-видимому, выделяются и отслеживаются внутренним отладчиком Eclipse, которые легче читать и распознавать, чем фактические идентификаторы объектов JVM. – skaffman
Я тоже думаю, что они происходят из http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ObjectReference.html#uniqueID%28 % 29 отладчиком Eclipse. – Redlab