覆蓋hascode和toString,clone方法

hascode方法

覆蓋equals時要覆蓋hascode方法.另外覆蓋hascode方法能夠使的基於散列的集合,如hashtable,hashMap,hashSet分佈的更均勻.java

通常重寫是將其關鍵域的hash加起來.這樣能獲得一個比較好的hash值.設計

在equal對象時,這樣能避免相贊成義的對象在比較hash時就沒法繼續進行比較.調試

toString()方法

通常而言,toString()方法返回的是對象的類名+無符號的十六進制表示法,但在java程序調試中,內存地址沒太大的做用.code

因此,覆蓋toString()方法,將其關鍵字段輸出,這有利於調試跟蹤.對象

clone方法

通常不建議覆蓋,不必定能很好的實現.繼承

爲了繼承設計的類,應該將其clone方法設計爲protected ,且拋出CloneNotSupportException異常,且不實現Clonable接口接口

若是要實現該方法,則須要實現Clonable接口.複雜的對象不只要拷貝其結構,還有拷貝他的數據.並且還不能調用構造器.內存

因此,通常用拷貝構造器或拷貝工廠實現該功能hash

相關文章
相關標籤/搜索