Здравствуйте, AlxB, Вы писали:
AB>Здравствуйте,
AB>Столкнулся со следующий проблемой, System.identityHashCode выдает одинаковый хеш для контролов одновременно находящихся на форме.
А в чём проблема-то?
AB>Кто нибудь почему это происходит?
Хеш-код не имеет никакого отношения к уникальности.
Разные объекты вполне могут иметь одинаковый хеш-код.
Он нужен чтоб объекты распихивать равномернее по хэш-таблицам, и больше ни для чего.
AlxB wrote: > Соответсвенно напрашивается вывод, что это что-то с приложением. Я не > сильно знаком с этой областью, не подскажет как такое может быть?
1. Вы неправильно выводите в логи хеш. Получается одна и та же строка,
независимо от хеша.
2. Вы вместо хеша выводите какую-то ерунду, всё время одну и ту же.
3. Вы вычисляете хеш от одного и того же объекта (а не от разных компонент).
Возможно от null.
Остальные варианты имеют пренебрежимо малую вероятность.
Столкнулся со следующий проблемой, System.identityHashCode выдает одинаковый хеш для контролов одновременно находящихся на форме.
Вот лог, формат [хеш] : obj.toString()
Здравствуйте, AlxB, Вы писали:
AB>Что мне показалось странным — это то что хеш состоит из 2х одинаковых частей по 4 байта причем для всех контролов. Вот например еще toString():
Андроид?
Re[2]: System.identityHashCod считает не уникальный хеш
Он не очень-то уникальный 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 считает не уникальный хеш
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, AlxB, Вы писали:
B>Он не очень-то уникальный http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6809470
Да, конечно. Но, как я сказал, меня смутила симметрия в коде (по 2 байта вы правы )
B>Может у вас с выводом что, а не с кодами? B>Это IDE так показывает?
Нет это логирование с выводом все в порядке.
.
Re[3]: System.identityHashCod считает не уникальный хеш
Здравствуйте, AlxB, Вы писали:
AB>Нет это логирование с выводом все в порядке.
Вы явно System.identityHashCode там вызываете и потом сами в hex форматируете?
Re[4]: System.identityHashCod считает не уникальный хеш
Здравствуйте, Blazkowicz, Вы писали:
AB>>Нет это логирование с выводом все в порядке. B>Вы явно System.identityHashCode там вызываете и потом сами в hex форматируете?
Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что
такой элемент уже есть.
.
Re[5]: System.identityHashCod считает не уникальный хеш
Здравствуйте, AlxB, Вы писали:
AB>Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что AB>такой элемент уже есть.
Мистика. Это со всеми объектами или только компанентами? Можно ли как-то получить тестовый пример кода? У меня большое Swing приложение. Подобных странностей не наблюдаю. Java 1.6.0_u21
Re[6]: System.identityHashCod считает не уникальный хеш
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, AlxB, Вы писали:
AB>>Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что AB>>такой элемент уже есть. B>Мистика. Это со всеми объектами или только компанентами? Можно ли как-то получить тестовый пример кода? У меня большое Swing приложение. Подобных странностей не наблюдаю. Java 1.6.0_u21
Я так подозреваю, речь идёт об одном и том же компоненте. Например, везде пытаются считать хеш не компонента, а родителя. Или какой-то константы, вроде Boolean.TRUE. Или спутали имена локальной переменной и члена класса.
Re[6]: System.identityHashCod считает не уникальный хеш
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, AlxB, Вы писали:
AB>>Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что AB>>такой элемент уже есть. B>Мистика. Это со всеми объектами или только компанентами? Можно ли как-то получить тестовый пример кода? У меня большое Swing приложение. Подобных странностей не наблюдаю. Java 1.6.0_u21
К сожалению у меня очень ограниченные возможности по доступу к приложению.
Вот, что мне удалось выяснить. Добавил я отладочный вывод к SwingSet2 и попросил запустить на том же PC, так там все в порядке с hash. Соответсвенно напрашивается вывод, что это что-то с приложением.
Я не сильно знаком с этой областью, не подскажет как такое может быть?
Есть ли какой-то менеджер памяти, который можно переопределить для своего приложения (насколько я понял identityHashCod возвращает референс на память где объект находится)?
Либо как то переопределить поведение System.identityHashCod?
Либо еще что-то, что нужно проверить. Будет интересно узнать любые идеи.