亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java Override equals method 問題

Java Override equals method 問題

慕的地6264312 2019-04-24 15:19:19
這段equal改寫代碼是存在問題的,答案給出了問題的答案。但并不是很清楚自己的理解對不對。求指點public boolean equals(Object o) {     if (o == null) {         return false;     }     else if (o instanceof EmptyList) {         FListInteger f = (FListInteger) o;         return isEmpty(f);     }     else if (o instanceof Add) {         FListInteger f = (FListInteger) o;         if (size(this) == size(f)) {             for (int i = 0; i < size(this); i++) {             //-------------------------------------------                 if (get(this, i) != get(f, i)) {             //-------------------------------------------                     return false;                 }         }         return true;     }     else {         return false;  }  }  else {      return false;      } }橫線之間需改成if (FListInteger.get(this, i).equals(FListInteger.get(f2, i)))求問這里的問題是需要用類名調用get method嗎?而且當正在改寫equals的時候為什么還用equals做比較 這里可不可以用 ”==“感謝!
查看完整描述

2 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

這個要看FListInteger是怎么定義的。如果get是static方法,就要用類名調用(或者對象實例調用),否則只能用實例調用。
這里是比較列表里兩個相同下標的元素是否內容相同。而==是判斷是否是同一個對象。兩個對象,但是存儲的內容相同,也應該是視作相同。
好比String。

查看完整回答
反對 回復 2019-05-14
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

如果你調用的equals和你寫的equals是同一個方法,要小心,避免造成無限遞歸

查看完整回答
反對 回復 2019-05-14
  • 2 回答
  • 0 關注
  • 576 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號