我有一个像下面的枚举
public enum Game {
CRICKET("cricket"),
FOOTBALL("football"),
VOLLEYBALL("volleyball")'
private String val;
private Game(String val) {
this.val = val;
}
public String getValue() {
return this.val;
}
}
在这里,我是否要覆盖equal(),hashCode(),toString()方法基于此What issues should be considered when overriding equals and hashCode in Java?
问题是没有意义的,因为您无法覆盖枚举的equal()
和hashCode()
。
这是因为它们在final
类中被定义为Enum
,这隐式是所有Enum
类型的基类。
否,enum
不是常规类(并且正如Andreas指出的那样,它们是enum
方法)。例如,您不需要使用final
进行比较,因为每个equals()
值只有一个实例。这使您可以改用enum
。
==
您可以覆盖if(gameType == Game.CRICKET)
,因为默认情况下,它的打印效果与toString()
相同,后者只是枚举的名称(例如name()
)。
我的第一个问题是,为什么您首先需要枚举包含一个String。枚举的要点已经看起来像是在特定游戏列表中区分每种游戏。因此,这里的枚举本身用作恒定值。例如,您可以这样做:
FOOTBALL