为了账号安全,请及时绑定邮箱和手机立即绑定

覆盖 Enum 中的 equal、toString、hashcode 方法

覆盖 Enum 中的 equal、toString、hashcode 方法

神不在的星期二 2023-12-10 15:10:04
我有一个像下面这样的枚举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() 方法吗?在 Java 中重写 equals 和 hashCode 时应该考虑哪些问题?
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

问题毫无意义,因为您无法覆盖enum 的equal()andhashCode()

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


查看完整回答
反对 回复 2023-12-10
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

不,enum这不是一个普通的类(正如安德烈亚斯指出的,它们是final方法)。例如,您不需要使用来equals()比较它们,因为每个值都有一个实例enum。这允许您使用==

if(gameType == Game.CRICKET)

您可以覆盖toString(),因为默认情况下它打印的内容与 相同name(),这只是枚举的名称(例如FOOTBALL)。


查看完整回答
反对 回复 2023-12-10
?
jeck猫

TA贡献1909条经验 获得超7个赞

我的第一个问题是为什么您首先需要枚举来包含字符串。您的枚举的目的看起来已经是在特定的可能游戏列表中区分每种类型的游戏。所以枚举本身在这里充当常量值。例如你可以这样做:


public void playGame( Game myGame ){

  switch(myGame){

    case FOOTBALL: 

      playFootball();

      break;

    case CRICKET:

      playCricket();

      break;

   // and so on but you get the point

}


查看完整回答
反对 回复 2023-12-10
  • 3 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信