[英]How to write hashCode() for subClass
我有一個關於hashCode的問題。 例如:
class A{
String name;
int age;
@Override
public int hashCode(){
int hash = 0;
hash = age;
hash = 31*hash + name.hashCode();
}
}
class B extends A{
}
class C extends A{
}
我的問題是,是否實例化具有相同名稱和年齡的一個B對象和一個C對象。 然后,A和B的hashCode()也相同。 hashCode()是否正確? 如果沒有,我該怎么做才能修改我的代碼?
當然,可以使用hashCode()
做到這一點。
當然,如果B
或C
添加任何新字段(這是常見的),則它們應覆蓋hashCode()
,調用super.hashCode()
並“擴展”該值。
另外,正如@bradimus在對問題的評論中暗示的那樣,當您覆蓋hashCode()
,您很有可能也應該覆蓋equals()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.