學習《Effective JAVA》(二)

第三章 對於全部對象都通用的方法性能

第8條:覆蓋equals時請遵照通用約定測試

不覆蓋equals方法的任一條件:code

類的每一個實例本質上都是惟一的。對象

不關心類的是否提供了「邏輯相等」的測試功能。blog

超類已經覆蓋了equals,從超類繼承過來的行爲對於子類也是合適的。排序

類是私有的或是包級私有的,能夠肯定它的equals方法永遠不會被調用。繼承

覆蓋equals所需遵照的條件:接口

覆蓋equals方法時總要覆蓋hashcode()hash

不要企圖讓equals方法過於智能class

不要將equals方法中聲明的Object對象替換爲其餘的類型

第9條 覆蓋equals方法時總要覆蓋hashCode

錯誤的hash Code的方法將會下降散列表的性能

不要試圖從散列碼計算中排除一個關鍵域來提升性能

第10條始終覆蓋toString

toString 方法應該返回對象中包含的全部值的關注的信息

第11條謹慎覆蓋clone

覆蓋clone問題不少,自行編寫一個靜態克隆方法會更好

第12條考慮實現Comparable接口

考慮到排序,需實現Comparable

相關文章
相關標籤/搜索