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

為了賬號安全,請及時綁定郵箱和手機立即綁定

eclipse生成的equals方法中Dog other = (Dog)obj疑問;

既然類對象都一樣了,也就是數據類型都一樣,為什么還要做這個強制轉換?不做轉換難道比較不了這兩個類的對象的屬性值?

正在回答

2 回答

不做轉換當然比較不了,雖然前面比較了類型,所以只有類型相同才會走到Dog other = (Dog) obj;這一行,但是你如果不寫這一行程序就不會知道obj其實也是Dog,就像我們知道如果能看到太陽在天上就一定是白天,但是如果你只是告訴程序太陽在天上,它并不能判斷出是白天,它只會嚴格按照我們指定的程序執行,但是并不具有最基本的邏輯推理能力。

3 回復 有任何疑惑可以回復我~
#1

GrimNew 提問者

類型相同為什么還會走Dog other = (Dog) obj;,屬性名稱的數據類型都相同了,那直接去判斷age!=obj.age兩個屬性值是否相等不就好了嗎,何必把obj的屬性強制轉換成Dog再去判斷呢?簡單說,刪去Dog other = (Dog) obj;,if括號中改為age!=obj.age和例程一樣不?
2017-02-12 回復 有任何疑惑可以回復我~
#2

GrimNew 提問者

問題已經解決。上面是我本來想問的,編輯了一會兒,自己又去探索了。我的這個問題出在重寫equals上,重寫的equals參數是Object obj,注意是Object,不是Dog,傳遞參數時沒有指明類型,所以強制類型轉換才能比較,我在IDEA自己寫著試了一下,把參數改成Dog.obj,那就可以直接去比較了。省去了自己改代碼的麻煩,IDE太強大。我把自己的問題寫出來方便大家,也算是學習成果了。
2017-02-12 回復 有任何疑惑可以回復我~
#3

GrimNew 提問者

3Q
2017-02-12 回復 有任何疑惑可以回復我~
#4

ziom 回復 GrimNew 提問者

嗯,謝謝采納
2017-02-12 回復 有任何疑惑可以回復我~
#5

Justeasy 回復 GrimNew 提問者

原來如此,樓主是你自己解決了這個問題
2017-07-20 回復 有任何疑惑可以回復我~
#6

Justeasy 回復 GrimNew 提問者

樓主是你自己解決了這個問題
2017-07-20 回復 有任何疑惑可以回復我~
查看3條回復

同疑問,我再看看

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

eclipse生成的equals方法中Dog other = (Dog)obj疑問;

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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