我有一個像下面這樣的枚舉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
。

有只小跳蛙
TA貢獻1824條經驗 獲得超8個贊
不,enum
這不是一個普通的類(正如安德烈亞斯指出的,它們是final
方法)。例如,您不需要使用來equals()
比較它們,因為每個值都有一個實例enum
。這允許您使用==
。
if(gameType == Game.CRICKET)
您可以覆蓋toString()
,因為默認情況下它打印的內容與 相同name()
,這只是枚舉的名稱(例如FOOTBALL
)。

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
}
添加回答
舉報
0/150
提交
取消