为什么hashCode&是否需要生成非静态字段?

时间:2013-05-08 14:48:42

标签: eclipse static

我很好奇我在测试日食功能时遇到的这个错误:

enter image description here

我尝试使用命令“generate hashCode& Equals”,但因为该类只有static方法,所以它拒绝了它。这是如何工作的(即hashCode() / equals()需要非静态方法?)?

谢谢

2 个答案:

答案 0 :(得分:2)

hashCode应该为类的每个实例生成唯一标识符,并且equals将此实例与另一个实例进行比较,以查看它们是否相等。根据定义,这些方法对于此类的每个实例都是必需的,因此该方法不能是静态的。此外,这些方法从Object继承为非静态方法,您无法更改它。

答案 1 :(得分:2)

hashCodeequals方法属于具体对象,需要属于该对象的成员来计算任何有意义的值。

EG。如果要比较同一个类的两个实例,可以通过equals和/或hashCode方法比较它们的“计算值”来实现。

静态方法和成员属于该类,而不是唯一的具体实例。