重寫equals的代碼中已經用getclass判斷了兩個對象的類型是否一樣為什么還要再強制轉換一次?
在重寫equals的時候里面有這幾行代碼,
public boolean equals(Object obj) {
...
if (getClass() != obj.getClass())
return false;
HelloWorld other = (HelloWorld) obj;
...
}
這里已經用getclass判斷了兩個對象的類型是否一樣為什么還要再強制轉換一次?
在重寫equals的時候里面有這幾行代碼,
public boolean equals(Object obj) {
...
if (getClass() != obj.getClass())
return false;
HelloWorld other = (HelloWorld) obj;
...
}
這里已經用getclass判斷了兩個對象的類型是否一樣為什么還要再強制轉換一次?
2016-08-05
舉報
2016-08-05
你的問題邏輯有問題,if (A != B),那么你再寫B(tài) = A是要賦值還是判斷相等;相不相等是人為規(guī)定的一種狀態(tài),這狀態(tài)是怎么樣就怎么樣,你沒法通過比較兩者改變這種狀態(tài)。再有,B = A是賦值操作,B == A才是判斷操作,然而 B == A只是單純返回true 或 false,跟你一開始問的強制轉換是沒有關系的。計算機默認判斷兩個對象是否相等的方式是通過內存地址(這種默認當然也是人給計算機規(guī)定的),而重寫equals方法就是改變這種計算機的默認判斷方式,告訴計算,如果兩個對象同屬于一類,同時它們屬性值相等,那么它們就是相等的。
2022-03-26
我也想到你說的這個問題,而且老師這個左側菜單欄小于屏幕高度的話會出現(xiàn)掉下來的問題親,謝謝提醒,我們已經對本小節(jié)的測試做了修正。哈哈請繼續(xù)支持我們課程。
2016-08-05
很多人類認為理所當然的事情,你如果不明確告訴計算機它就不會知道,比如有一個未知性別的人,我們可以這樣判斷:如果ta不是男人,那ta就是女人(這里不考慮人妖),但如果你只告訴計算機這個人不是男人,計算機是無法判斷ta是女人的,計算機只是[單純知道了這個人不是男人],你只有繼續(xù)跟計算機明確說明這個人是女人才行。
2016-08-05
他要達到的目的就是強轉,只有強轉以后才可以進行后續(xù)判斷。