【发布时间】:2013-03-09 13:40:25
【问题描述】:
我们知道java枚举类:
- 隐式扩展 java.lang.Enum;
- 不能从任何其他枚举类扩展。
我有多个枚举类,如下所示:
enum ResourceState {
RUNNING, STOPPING,STARTTING;//...
void aMethod() {
// ...
}
}
enum ServiceState {
RUNNING, STOPPING,STARTTING,ERROR;//...
void aMethod() {
// ...
}
}
枚举ResourceState和ServiceState中的方法aMethod()完全相同。
在 OOP 中,如果 ResourceState 和 ServiceState 不是枚举,它们应该将相同的方法抽象为一个超抽象类,如下所示:
abstract class AbstractState{
void aMethod() {
// ...
}
}
但是 ResourceState 无法从 AbstractState 扩展,你有什么想法可以解决吗?
【问题讨论】:
-
你的意思是“完全一样”?两个枚举都没有引用吗?如果是这样,您可以将逻辑提取到静态方法中。
-
这就是我现在正在做的,但我正在寻找更好的解决方案