★★Java質問・相談スレッド165★★
■ このスレッドは過去ログ倉庫に格納されています
0201デフォルトの名無しさん
2013/11/01(金) 01:29:11.36>>188
この場合はidentifierじゃなくてidentity。Object#equalsとObject#hashCodeの汎用規約はidentityと決まってる。
だからequivalencyが必要な時オーバーライドするんだろうがggr
ttps://www.google.com/webhp?q=java+equals+identity&safe=off
>>182
collections frameworkの実装はHashMap以外にもObject#hashCode使ってる。(List実装は使ってないけど)
Object#equalsをオーバーライドするとき常に一緒にオーバーライドするのがObject#hashCodeの要件だし、
Object#hashCodeはObject#equalsがfalseのときでも同じハッシュ返してもいいからObject#equalsがfalseのとき常に違う値返すようにしないとパフォーマンス悪い。
>>187
ハードウェアでノイズ生成でもしないと必ず一意になる値は生成不可能だから一般的にはダブる確率が低くてコストも低いメモリアドレスで代用する。
openjdkの実装もそうなってるしjavadocにも記述されてるからラッパークラスのキャッシュと同じでAPI側の仕様。
>>191
nullのidentity hashは必ず0と決まってるからnull時の動作は別途記述がない限り定義済み。
collections frameworkの実装は基本的にnullableだから>>168の話とnullは関係ない。
■ このスレッドは過去ログ倉庫に格納されています