Java System.IdentityHashCode возвращается по разным значениям внутриJAVA

Программисты JAVA общаются здесь
Anonymous
Java System.IdentityHashCode возвращается по разным значениям внутри

Сообщение Anonymous »

java System.IdentityHashCode (...) Метод возвращает другое значение для объекта, когда я называю его внутренне, используя ссылку this , по сравнению с вызовом на ссылке переменной того же объекта.

Код: Выделить всё

class MyObject {
public void test(MyObject that){
LOGGER.info("this hash: {}",System.identityHashCode(this));
LOGGER.info("that hash: {}",System.identityHashCode(that));
LOGGER.info("equals: {}",this == that);
}
}
< /code>
и тест ... < /p>
MyObject o = new MyObject();
o.test(o);
< /code>
и вывод ... < /p>
this hash: 263009111
that hash: 524075148
equals: false
< /code>
Что это произойдет? Реальный объект, о котором идет речь, представляет собой целевую сущность, но я добавил приведенный выше тест непосредственно в код, и он показал одно и то же поведение в определенном сценарии. Почему объект показывает другой хэш -код идентификации, используя ключевое слово  this , чем на ссылке на себя? Я также подтвердил, что эталон является правильной, установив некоторые поля объекта и подтвердив, что локальные поля были установлены на одни и те же значения.
Так что если ссылка верна, почему IdentityHashCode (...) 
возвращает два разных значения, и почему оператор == выполняется? У меня было впечатление, что этот метод был специально реализован для определения ссылок на тот же логический объект?

Подробнее здесь: https://stackoverflow.com/questions/438 ... internally

Вернуться в «JAVA»