我很好奇這個錯誤,我得到同時檢測出日食的功能:爲什麼hashCode&equal需要生成非靜態字段?
我試圖使用命令‘產生的hashCode &等於’,但因爲類只有static
方法它拒絕了。這是如何工作的(即hashCode()
/equals()
需要非靜態方法?)?
謝謝
我很好奇這個錯誤,我得到同時檢測出日食的功能:爲什麼hashCode&equal需要生成非靜態字段?
我試圖使用命令‘產生的hashCode &等於’,但因爲類只有static
方法它拒絕了。這是如何工作的(即hashCode()
/equals()
需要非靜態方法?)?
謝謝
hashCode
和equals
方法屬於一個具體的對象,並且需要屬於該對象的成員來計算任何有意義的值。
例如,如果你想比較同一類的兩個實例,你可以通過比較它們的「計算值」,通過它們的equals
和/或hashCode
方法。
靜態方法和成員屬於類而不是唯一的具體實例。
的hashCode應該爲類生成的每個實例的唯一標識符和等於該實例比較,另一個實例,看看他們是否相等。根據定義,這些方法對於這個類的每個實例都是必需的,所以這個方法不能是靜態的。而且,這些方法作爲非靜態方法從Object繼承,您無法更改。
非常感謝! – Coffee 2013-05-08 15:06:56
我現在明白了!謝謝 ! – Coffee 2013-05-08 15:06:10
也不要在hashcode()和equals()中使用'transient'變量。 – roottraveller 2017-09-29 06:59:18