【发布时间】:2011-02-27 05:26:38
【问题描述】:
我注意到下面的 sn-p...
@Override
public boolean equals(Object otherObject) {
...
}
...不允许用于枚举,因为方法 equals(Object x) 在 Enum 中定义为 final。为什么会这样?
我想不出任何需要为 Enum 覆盖 equals(Object) 的用例。我只是想知道这种行为背后的原因。
【问题讨论】:
-
我的用例是当我通过 JSON 接收字符串值并想查看它是否与我的枚举中的现有值匹配时。虽然在我的情况下,我有一个枚举构造函数,它接收一个字符串值,我将它保存在一个私有变量中,所以在一天结束时我会比较我猜的字符串。但我更喜欢
MY_ENUM.VALUE.equals("hello")然后MY_ENUM.VALUE.toString().equals("hello")希望这是有道理的。
标签: java enums api-design