рассматривая универсальный параметр как просто «биты» - PullRequest
0 голосов
/ 19 апреля 2011

Я хочу реализовать хеш-функцию, которая принимает универсальный и генерирует хеш. Функция будет работать на уровне битов, перемещая биты и тому подобное.

Как я могу это сделать? Я думал об использовании массива байтов, но как мне преобразовать универсальный аргумент в массив байтов? Есть ли лучший подход?

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 19 апреля 2011

Почему бы просто не переопределить hashCode () в классах (я предполагаю, что мы говорим о созданных вами классах), и делать все, что вы пожелаете, в hashCode (). Я не уверен, где вы планируете поместить эту «хэш-функцию», о которой вы говорите. Утилита метод?

1 голос
/ 19 апреля 2011

Нет, в Java нет способа трактовать произвольный объект как байтовый массив. Эта способность оборвала бы огромное целое во всей концепции безопасности типов и даже безопасности кода, поскольку позволила бы произвольные манипуляции с объектами даже вне спецификации их типов.

Вы можете преобразовать ограниченное подмножество объектов в поток байтов, используя сериализацию, но классы должны будут поддерживать это (в основном, путем реализации Serializable).

0 голосов
/ 23 апреля 2011

Все объекты в Java имеют .hashCode(). Вы можете просто использовать это как свои «биты» для работы.

...