国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Effective Java讀書筆記之二

2019-11-18 14:52:38
字體:
來源:轉載
供稿:網友

Methods Common to All Objects

 

item 7:當你覆蓋equals方法的時候一定要遵守general contact

 

   覆蓋equals的時候一定要加倍的小心,其實最好的辦法就是不覆蓋這個方法。比如在下面的情況下就可以不覆蓋

   1這個類的每個實例都是唯一的,例如Thread類

   2 假如你不關心這個類是否該提供一個測試邏輯相等的方法

   3超類已經覆蓋了equals方法,并且它合適子類使用

   4假如這個類是PRivate或者是package-private的,并且你確信他不會被調用

 

   但是當我們要為這個類提供區分邏輯相等和引用相等的方法的時候,我們就必須要覆蓋這個方法了。例如String類,Date類等,覆蓋的時候我們一定要遵從general contact,說白了就是一個合同。合同的主要內容是

   1.x.equals(x)必須返回true

   2.x.equals(y)當且僅當y.equals(x)返回true的時候返回true

   3.x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)必須返回true

   4.假如沒有任何修改得話 那么多次調用x.equals(y)的返回值應該不變

   5.任何時候非空的對象x,x.equals(null)必須返回false

下面是作者的建議如何正確的覆蓋equals方法

1.  用==檢查是否參數就是這個對象的引用

2.  用instanceof判定參數的類型是否正確

3.  把參數轉換成合適的類型

4.  比較類的字段是不是匹配

例如:

public boolean equals(Object o)

{

       if(o== this) return true;

       if(!(o instanceof xxxx) return false;



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼和浩特市| 万盛区| 潞城市| 宁明县| 游戏| 什邡市| 化德县| 巴塘县| 淮安市| 蓝田县| 师宗县| 遵义市| 阳信县| 嘉兴市| 海阳市| 三门峡市| 天等县| 五原县| 金川县| 阿拉尔市| 沧源| 太康县| 玛纳斯县| 大连市| 庄浪县| 霍林郭勒市| 邵东县| 黑水县| 疏附县| 绩溪县| 安陆市| 福建省| 保德县| 喀喇| 江城| 鲜城| 浦江县| 汪清县| 长垣县| 亚东县| 尼木县|