2013-05-08 73 views
0

我很好奇這個錯誤,我得到同時檢測出日食的功能:爲什麼hashCode&equal需要生成非靜態字段?

enter image description here

我試圖使用命令‘產生的hashCode &等於’,但因爲類只有static方法它拒絕了。這是如何工作的(即hashCode()/equals()需要非靜態方法?)?

謝謝

回答

2

hashCodeequals方法屬於一個具體的對象,並且需要屬於該對象的成員來計算任何有意義的值。

例如,如果你想比較同一類的兩個實例,你可以通過比較它們的「計算值」,通過它們的equals和/或hashCode方法。

靜態方法和成員屬於類而不是唯一的具體實例。

+0

我現在明白了!謝謝 ! – Coffee 2013-05-08 15:06:10

+0

也不要在hashcode()和equals()中使用'transient'變量。 – roottraveller 2017-09-29 06:59:18

2

的hashCode應該爲類生成的每個實例的唯一標識符和等於該實例比較,另一個實例,看看他們是否相等。根據定義,這些方法對於這個類的每個實例都是必需的,所以這個方法不能是靜態的。而且,這些方法作爲非靜態方法從Object繼承,您無法更改。

+0

非常感謝! – Coffee 2013-05-08 15:06:56

相關問題