Как распечатать адрес переменной?

 
0
 
Java
ava
Dims | 17.11.2007, 12:06
Мне нужно в тестовых целях распечатать то, что сравнивает оператор == для объектов. Я хочу видеть, что в некоторых местах у меня действительно один и тот же объект берётся из кеша.

В отладчике видно, но надо именно в System.out

Возможно такое?
Ответы (15)
ava
w1nd | 19.11.2007, 14:44 #
System.identityHashCode()
ava
AlexeyVorotnikov | 19.11.2007, 16:16 #
Цитата (w1nd @ 19.11.2007, 14:44)
System.identityHashCode()

Но это же не адрес, это хеш-код...
ava
_Michael | 19.11.2007, 16:47 #
В Джаве есть такой класс sun.misc.Unsafe. Вот с помощью методов етого класса можно узнать то что тебе надо. Чтоб долго не рассказывать, прочти
http://www.wasm.ru/article.php?article=unsjav1
ava
w1nd | 19.11.2007, 17:31 #
AlexeyVorotnikov, _Michael, читаем внимательно:
Цитата (Dims @ 17.11.2007, 12:06 findReferencedText)
Мне нужно в тестовых целях распечатать то, что сравнивает оператор == для объектов.


ava
AlexeyVorotnikov | 19.11.2007, 17:36 #
Цитата (w1nd @ 19.11.2007, 17:31)
AlexeyVorotnikov, _Michael, читаем внимательно:

Цитата (Dims @  17.11.2007, 12:06 \\"findReferencedText\\")
Мне нужно в тестовых целях распечатать то, что сравнивает оператор == для объектов.

И что?
Оператор == для объектов сравнивает ссылки на них.
ava
w1nd | 19.11.2007, 18:03 #
Цитата (AlexeyVorotnikov @ 19.11.2007, 17:36 findReferencedText)
И что?Оператор == для объектов сравнивает ссылки на них.

Автору нужен способ сравнения объектов вне зависимости от того, переопределены у них equals() и hashCode(). Способ только один - сравнение по результату System.identityHashCode(). Использование sun.misc.Unsafe недопустимо (непубличные API). Кроме того, адрес для конкретного объекта с течением времени может меняться, тогда как системный хэш-код - нет.
ava
_Michael | 19.11.2007, 18:04 #
Значение ссилки как я полагаю есть адрес в памяти.
Цитата


Кроме того, адрес для конкретного объекта с течением времени может меняться, тогда как системный хэш-код - нет.


Хм. А где можно прочитать про то что адрес обьекта с течением времени может меняться?
ava
w1nd | 19.11.2007, 18:05 #
Цитата (_Michael @ 19.11.2007, 18:04)
Значение ссилки ка я полагаю есть адрес в памяти.

Угу.
ava
_Michael | 19.11.2007, 18:11 #
Цитата (Dims @ 17.11.2007, 12:06 findReferencedText)
Мне нужно в тестовых целях распечатать то, что сравнивает оператор == для объектов.


Цитата (w1nd @ 19.11.2007, 18:03 findReferencedText)
Автору нужен способ сравнения объектов вне зависимости от того, переопределены у них equals() и hashCode().


Я так понял автору надо было получить значение адреса обьекта, поскольку оператор == сравнивает ссилки то-есть адреса в памяти, а уж правильно ли он делает что будет использовать етот адрес для сравнения ето другой вопрос :)

ava
Dims | 28.11.2007, 18:42 #
Спасибо! Всегда забываю порыться в этом System. Наверное, System.identityHashCode() подойдёт. Хотя описание функции ("хэш" код) вызывает сомнение. Ведь по идее, хэш-код гарантирует сохранение равенства, но не различия. То есть, в принципе, у совершенно разных переменных может быть одинаковый хэш-код.
ava
w1nd | 28.11.2007, 23:18 #
Цитата (Dims @ 28.11.2007, 18:42 findReferencedText)
То есть, в принципе, у совершенно разных переменных может быть одинаковый хэш-код.

У любого набора объектов в jvm cистемный хэш-код (identity hash code) никогда не будет совпадать. Но может использоваться повторно для нового объекта, если старый уничтожен сборщиком мусора.
ava
Dims | 29.11.2007, 08:55 #
А почему так? Это где-то постулируется?
ava
w1nd | 29.11.2007, 09:36 #
Цитата (Dims @ 29.11.2007, 08:55 findReferencedText)
А почему так? Это где-то постулируется?

Да, где-то на java.sun.com в какой-то спецификации было.
ava
AlexeyVorotnikov | 29.11.2007, 10:48 #
Цитата (w1nd @ 29.11.2007, 09:36)
Цитата (Dims @  29.11.2007, 08:55 \\"findReferencedText\\")
А почему так? Это где-то постулируется?


Да, где-то на java.sun.com в какой-то спецификации было.

А точнее можно?
ava
w1nd | 29.11.2007, 11:37 #
Цитата (AlexeyVorotnikov @ 29.11.2007, 10:48 findReferencedText)
А точнее можно?

Точнее не помню. Найду время найти - отпишусь.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить