第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

重寫equals的代碼中已經用getclass判斷了兩個對象的類型是否一樣為什么還要再強制轉換一次?

在重寫equals的時候里面有這幾行代碼,

public boolean equals(Object obj) {

...

if (getClass() != obj.getClass())

return false;

HelloWorld other = (HelloWorld) obj;

...

}

這里已經用getclass判斷了兩個對象的類型是否一樣為什么還要再強制轉換一次?


正在回答

4 回答

你的問題邏輯有問題,if (A != B),那么你再寫B(tài) = A是要賦值還是判斷相等;相不相等是人為規(guī)定的一種狀態(tài),這狀態(tài)是怎么樣就怎么樣,你沒法通過比較兩者改變這種狀態(tài)。再有,B = A是賦值操作,B == A才是判斷操作,然而 B == A只是單純返回true 或 false,跟你一開始問的強制轉換是沒有關系的。計算機默認判斷兩個對象是否相等的方式是通過內存地址(這種默認當然也是人給計算機規(guī)定的),而重寫equals方法就是改變這種計算機的默認判斷方式,告訴計算,如果兩個對象同屬于一類,同時它們屬性值相等,那么它們就是相等的。

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

一青 提問者

public static void main(String[] args) { Dog dog = new Dog(); Animal animal = new Dog(); System.out.println(dog.equals(animal)); } 大概懂了,我剛才自己這樣試著敲了下,感覺應該是為了避免這種多態(tài)的情況,非常感謝你的回答:)
2016-08-05 回復 有任何疑惑可以回復我~
#2

ziom 回復 一青 提問者

掙你這3積分真是辛苦。。
2016-08-05 回復 有任何疑惑可以回復我~
#3

一青 提問者 回復 ziom

哈哈,可惜這個不能自己設置積分,不然肯定給你多一點
2016-08-05 回復 有任何疑惑可以回復我~

我也想到你說的這個問題,而且老師這個左側菜單欄小于屏幕高度的話會出現(xiàn)掉下來的問題,,節(jié)續(xù)。

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

很多人類認為理所當然的事情,你如果不明確告訴計算機它就不會知道,比如有一個未知性別的人,我們可以這樣判斷:如果ta不是男人,那ta就是女人(這里不考慮人妖),但如果你只告訴計算機這個人不是男人,計算機是無法判斷ta是女人的,計算機只是[單純知道了這個人不是男人],你只有繼續(xù)跟計算機明確說明這個人是女人才行。

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

一青 提問者

非常感謝你的回答,但是我還是有一點不清楚。相等和不相等是兩個完全對立的情況,如果不是這個就肯定是另外一個。按你的說法,如果有兩個變量A = 3,B = 3,用if(A != B)判斷以后難道還要再寫一步B = A才能讓B和A相等嗎?
2016-08-05 回復 有任何疑惑可以回復我~

他要達到的目的就是強轉,只有強轉以后才可以進行后續(xù)判斷。

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

一青 提問者

還是沒理解,假如是HelloWorld的對象A和某個對象B來比較,如果兩個對象類型不同,那么直接就return false跳出了,如果相同的話,那么B就應該也是HelloWorld類型的對象,就應該不需要再強制轉換了呀
2016-08-05 回復 有任何疑惑可以回復我~
#2

ziom 回復 一青 提問者

換個角度理解,你就算不經過 getClass() != obj.getClass() 這一步判斷也可以進行強轉,只不過是有可能轉換失敗而已,而經過了這一步判斷則一定可以轉換成功,所以強制轉換是一定要你手動來寫的,你不寫的話程序只會傻傻的執(zhí)行到那一步就不動了,程序只會根據代碼的邏輯執(zhí)行操作,他自己是不會有邏輯思維的。
2016-08-05 回復 有任何疑惑可以回復我~
#3

ziom 回復 一青 提問者

如果ta不是男人,那ta就是女人(這里不考慮人妖),但如果你告訴計算這個人不是男人,計算機是無法判斷ta是女人的,計算機只是[單純知道了這個人不是男人],你只有繼續(xù)跟計算機明確說明這個人是女人才行。
2016-08-05 回復 有任何疑惑可以回復我~
#4

ziom 回復 ziom

靠,慕課網吃了我的回復。。。
2016-08-05 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消

重寫equals的代碼中已經用getclass判斷了兩個對象的類型是否一樣為什么還要再強制轉換一次?

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

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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