在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ java里的類的equals方法為什么一定要覆蓋默認的equals方法?

java里的類的equals方法為什么一定要覆蓋默認的equals方法?

這樣難道起不到比較的功能么?編譯器不是會按照匹配程度,自動把參數(shù)列表里是Object的那個給無視掉么?

class Circle 
{
    double radius;
    public boolean equals(Circle circle) 
    {
        
        return this.radius==circle.radius;
    }
}
回答
編輯回答
詆毀你

如果這個equals方法自己通過其他代碼調(diào)用是沒問題的,因為其他代碼調(diào)用的時候用的就是你現(xiàn)在寫的equals(Circle circle)方法。
但是假如你這個類是作為hashmap等這種key的話,那就會出問題,因為他們只會調(diào)用Object中的equals(Object obj)方法

clipboard.png
所以通常來說都是要求覆蓋默認的equals方法,不然容易留坑

2017年3月28日 19:02
編輯回答
無標題

我簡單測試了一下,這種寫法是沒問題的。會首先調(diào)用你的這個equals。但Object提供了equals方法,為什么不重寫呢?

2017年8月2日 12:24
編輯回答
厭惡我

這問題我是沒看懂了。 你這樣的寫法如果沒有使用集合如hashmap,hashset的話,是沒有問題的。但是如果你的circle對象要存到集合中。這樣寫就不能比較。因為沒有重寫hashcode方法

2018年5月31日 23:15