覆盖枚举中的相等的toString哈希码方法

问题描述 投票:1回答:3

我有一个像下面的枚举

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?

java
3个回答
3
投票

问题是没有意义的,因为您无法覆盖枚举的equal()hashCode()

这是因为它们在final类中被定义为Enum,这隐式是所有Enum类型的基类。


1
投票

否,enum不是常规类(并且正如Andreas指出的那样,它们是enum方法)。例如,您不需要使用final进行比较,因为每个equals()值只有一个实例。这使您可以改用enum

==

您可以覆盖if(gameType == Game.CRICKET) ,因为默认情况下,它的打印效果与toString()相同,后者只是枚举的名称(例如name())。


0
投票

我的第一个问题是,为什么您首先需要枚举包含一个String。枚举的要点已经看起来像是在特定游戏列表中区分每种游戏。因此,这里的枚举本身用作恒定值。例如,您可以这样做:

FOOTBALL
© www.soinside.com 2019 - 2024. All rights reserved.