簡體   English   中英

如何為子類編寫hashCode()

[英]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()做到這一點。

當然,如果BC添加任何新字段(這是常見的),則它們應覆蓋hashCode() ,調用super.hashCode()並“擴展”該值。

另外,正如@bradimus在對問題的評論中暗示的那樣,當您覆蓋hashCode() ,您很有可能也應該覆蓋equals()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM