System.identityHashCod считает не уникальный хеш
От: AlxB Украина  
Дата: 06.10.10 10:09
Оценка:
Здравствуйте,

Столкнулся со следующий проблемой, System.identityHashCode выдает одинаковый хеш для контролов одновременно находящихся на форме.
Вот лог, формат [хеш] : obj.toString()

[070c070c] : com.nfs.dcdirect.swing.panel.DCDItemGroupSizingPanel[,0,0,200x489,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=]
[070c070c] : com.nfs.dcdirect.swing.DCDLabel[,447,36,224x14,alignmentX=0.0,alignmentY=0.0,border=,flags=25165824,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=RIGHT,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Gross Premiums YTD: ,verticalAlignment=CENTER,verticalTextPosition=CENTER]

Что мне показалось странным — это то что хеш состоит из 2х одинаковых частей по 4 байта причем для всех контролов. Вот например еще toString():

javax.swing.plaf.BorderUIResource$EmptyBorderUIResource@15e215e2

Кто нибудь почему это происходит?
Спасибо.
.
Re: System.identityHashCod считает не уникальный хеш
От: Blazkowicz Россия  
Дата: 06.10.10 10:12
Оценка:
Здравствуйте, AlxB, Вы писали:

AB>Кто нибудь почему это происходит?

AB>Спасибо.
ОS, версия JVM и вендор.
Re: System.identityHashCod считает не уникальный хеш
От: Blazkowicz Россия  
Дата: 06.10.10 10:16
Оценка:
Здравствуйте, AlxB, Вы писали:

AB>Что мне показалось странным — это то что хеш состоит из 2х одинаковых частей по 4 байта причем для всех контролов. Вот например еще toString():


Андроид?
Re[2]: System.identityHashCod считает не уникальный хеш
От: AlxB Украина  
Дата: 06.10.10 10:20
Оценка:
Здравствуйте, Blazkowicz, Вы писали:


B>ОS, версия JVM и вендор.


OS: WinXP
ver: JRE 1.6.0_20 раньше на 1.6.0_06 то же было
стандартная SUN'овская

Спасибо.
.
Re: System.identityHashCod считает не уникальный хеш
От: Blazkowicz Россия  
Дата: 06.10.10 10:40
Оценка:
Здравствуйте, AlxB, Вы писали:

Он не очень-то уникальный http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6809470

AB>Столкнулся со следующий проблемой, System.identityHashCode выдает одинаковый хеш для контролов одновременно находящихся на форме.

AB>Вот лог, формат [хеш] : obj.toString()
Может у вас с выводом что, а не с кодами?


AB>Что мне показалось странным — это то что хеш состоит из 2х одинаковых частей по 4 байта причем для всех контролов. Вот например еще toString():

По 2 байта кстати.

AB>javax.swing.plaf.BorderUIResource$EmptyBorderUIResource@15e215e2

Это IDE так показывает?
Re[2]: System.identityHashCod считает не уникальный хеш
От: AlxB Украина  
Дата: 06.10.10 10:52
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, AlxB, Вы писали:


B>Он не очень-то уникальный http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6809470

Да, конечно. Но, как я сказал, меня смутила симметрия в коде (по 2 байта вы правы )


B>Может у вас с выводом что, а не с кодами?

B>Это IDE так показывает?

Нет это логирование с выводом все в порядке.
.
Re[3]: System.identityHashCod считает не уникальный хеш
От: Blazkowicz Россия  
Дата: 06.10.10 11:28
Оценка:
Здравствуйте, AlxB, Вы писали:

AB>Нет это логирование с выводом все в порядке.

Вы явно System.identityHashCode там вызываете и потом сами в hex форматируете?
Re[4]: System.identityHashCod считает не уникальный хеш
От: AlxB Украина  
Дата: 06.10.10 14:24
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

AB>>Нет это логирование с выводом все в порядке.

B>Вы явно System.identityHashCode там вызываете и потом сами в hex форматируете?
Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что
такой элемент уже есть.
.
Re[5]: System.identityHashCod считает не уникальный хеш
От: Blazkowicz Россия  
Дата: 06.10.10 15:05
Оценка:
Здравствуйте, AlxB, Вы писали:

AB>Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что

AB>такой элемент уже есть.
Мистика. Это со всеми объектами или только компанентами? Можно ли как-то получить тестовый пример кода? У меня большое Swing приложение. Подобных странностей не наблюдаю. Java 1.6.0_u21
Re[6]: System.identityHashCod считает не уникальный хеш
От: gegMOPO4  
Дата: 06.10.10 17:00
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, AlxB, Вы писали:


AB>>Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что

AB>>такой элемент уже есть.
B>Мистика. Это со всеми объектами или только компанентами? Можно ли как-то получить тестовый пример кода? У меня большое Swing приложение. Подобных странностей не наблюдаю. Java 1.6.0_u21

Я так подозреваю, речь идёт об одном и том же компоненте. Например, везде пытаются считать хеш не компонента, а родителя. Или какой-то константы, вроде Boolean.TRUE. Или спутали имена локальной переменной и члена класса.
Re: System.identityHashCod считает не уникальный хеш
От: mkizub Литва http://symade.tigris.org
Дата: 11.10.10 20:34
Оценка: +1
Здравствуйте, AlxB, Вы писали:

AB>Здравствуйте,


AB>Столкнулся со следующий проблемой, System.identityHashCode выдает одинаковый хеш для контролов одновременно находящихся на форме.


А в чём проблема-то?

AB>Кто нибудь почему это происходит?


Хеш-код не имеет никакого отношения к уникальности.
Разные объекты вполне могут иметь одинаковый хеш-код.
Он нужен чтоб объекты распихивать равномернее по хэш-таблицам, и больше ни для чего.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[6]: System.identityHashCod считает не уникальный хеш
От: AlxB Украина  
Дата: 15.10.10 07:00
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, AlxB, Вы писали:


AB>>Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что

AB>>такой элемент уже есть.
B>Мистика. Это со всеми объектами или только компанентами? Можно ли как-то получить тестовый пример кода? У меня большое Swing приложение. Подобных странностей не наблюдаю. Java 1.6.0_u21

К сожалению у меня очень ограниченные возможности по доступу к приложению.
Вот, что мне удалось выяснить. Добавил я отладочный вывод к SwingSet2 и попросил запустить на том же PC, так там все в порядке с hash. Соответсвенно напрашивается вывод, что это что-то с приложением.
Я не сильно знаком с этой областью, не подскажет как такое может быть?
Есть ли какой-то менеджер памяти, который можно переопределить для своего приложения (насколько я понял identityHashCod возвращает референс на память где объект находится)?
Либо как то переопределить поведение System.identityHashCod?
Либо еще что-то, что нужно проверить. Будет интересно узнать любые идеи.

Спасибо,
.
Re[7]: System.identityHashCod считает не уникальный хеш
От: gegMOPO4  
Дата: 15.10.10 09:56
Оценка: +1
AlxB wrote:
> Соответсвенно напрашивается вывод, что это что-то с приложением. Я не
> сильно знаком с этой областью, не подскажет как такое может быть?

1. Вы неправильно выводите в логи хеш. Получается одна и та же строка,
независимо от хеша.
2. Вы вместо хеша выводите какую-то ерунду, всё время одну и ту же.
3. Вы вычисляете хеш от одного и того же объекта (а не от разных компонент).
Возможно от null.

Остальные варианты имеют пренебрежимо малую вероятность.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.