私たちが知っているように、Java列挙型クラス:
- java.lang.Enum を暗黙的に拡張します。
- 他の列挙型クラスから拡張することはできません。
以下のように、複数の列挙型クラスがあります。
enum ResourceState {
RUNNING, STOPPING,STARTTING;//...
void aMethod() {
// ...
}
}
enum ServiceState {
RUNNING, STOPPING,STARTTING,ERROR;//...
void aMethod() {
// ...
}
}
aMethod()
enumのメソッドResourceState
とServiceState
まったく同じです。
OOP では、ResourceState
とServiceState
が列挙型でない場合、次のように、同じメソッドを超抽象クラスに抽象化する必要があります。
abstract class AbstractState{
void aMethod() {
// ...
}
}
しかし、ResourceState は AbstractState から拡張できません。回避策はありますか?