Java - классы-оболочки и hashCode () - PullRequest
0 голосов
/ 12 апреля 2011

Есть ли разница ч / б, возвращаемая целыми числами hashCode() и intValue()?Может ли хеш-код быть отрицательным?

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

Integer.hashCode() просто возвращает значение, да ... хотя не стоит полагаться на это. Возвращаемое значение хеш-кода должно действительно использоваться просто как непрозрачное значение, не придавая ему никакого особого значения - only равенство действительно должно быть принято во внимание. Даже если Integer.hashCode() является задокументированным , чтобы просто вернуть значение (РЕДАКТИРОВАТЬ: это так; см. Другой ответ), я бы очень настороженно относился к любому коду, который сломался бы, если реализация изменится на возврат (скажем) value + 1.

Возвращаемое значение hashCode(), безусловно, может быть отрицательным - как здесь, так и в целом.

3 голосов
/ 12 апреля 2011

Нет, нет никакой разницы, и, следовательно, да, оно может быть отрицательным или нулевым.

Из Javadoc :

Возвращает: значение хеш-кода для этого объекта, равное значению примитива int, представленному этим Integer объектом.

...