1. 程式人生 > >2、對於所有物件都通用的方法

2、對於所有物件都通用的方法

Object的設計主要是為了擴充套件。它的非final方法(equals、hashCode、toString、clone、finalize)都有明確的通用約定(general contract)。任何一個類覆蓋這些方法都有責任遵守這些約定。

覆蓋equals時遵守通用約定

覆蓋equals方法看似簡單卻易出錯。最容易避免的方法就是不覆蓋equeals方法,即類的每個例項都只與它自身相等。

覆蓋equals時總要覆蓋hashCode

如果覆蓋了equals則必須覆蓋hashCode。相等的物件必須有相等的雜湊碼(hashCode)

始終要覆蓋toString

Object提供的toString()返回的字串通常不是期望的看到的。覆蓋toString無論是否指定返回的字串格式應在文件中說明。

謹慎地覆蓋clone

因為Cloneable介面有很多問題,為了繼承而設計的類不應該去實現Cloneable介面。

考慮實現Comparable介面

類實現Comparable介面,可以跟generic algorithm(泛型演算法)及依賴於該介面實現的集合進行協作。

compareTo方法的通用約定與equals方法相似

通過指定返回值大小進行排序等操作