【发布时间】:2014-03-31 05:39:03
【问题描述】:
我有几个使用下划线分隔单词的 Java 枚举。在我的每个枚举中,我都有一个 toString 方法,它被实现为 super.toString().replace("_", " ") 以便我可以在没有下划线的情况下在 GUI 上显示字符串值。有什么方法可以让我的所有枚举都使用这个 toString 方法,而不用在所有枚举中复制它?如果这是一个常规类,答案很简单,实现 toString() 然后让我所有需要该实现的类扩展该类,但枚举不能扩展任何东西,甚至不能扩展另一个枚举。
public enum Example1 {
HELLO_WORLD, HELLO_EARTH, HELLO_GLOBE
@Override public String toString() {
return super.toString().replace("_", " ");
}
}
public enum Example2 {
ANSWER_1, ANSWER_2, ANSWER_3
@Override public String toString() {
return super.toString().replace("_", " ");
}
}
有没有人有一个不会在所有枚举中复制这个 toString() 方法的解决方案?
【问题讨论】:
-
在打印枚举时使用辅助方法。
-
有必要使用“枚举”吗?或者您可以将您的实现更改为类型安全的枚举,以便您可以进行一些继承?
-
@Neel 我明白你的意思,忘记了 Java 枚举并使用 Java 实际识别枚举之前的方法。这是个好主意。
-
已更新类型安全枚举指南...您可能需要填补空白。