Это зависит от того, хотите ли вы иметь возможность спросить StateTracker
, находится ли он в состояниях, объявленных различными enum
типами.
Если вы хотите заблокировать состояния так, чтобы данный трекер состояний можно было запрашивать только для одного типа enum
, создайте универсальный тип:
interface StateTracker<S extends Enum<S>> {
boolean isInState(S state);
}
final class MyStateTracker implements StateTracker<MyStateTracker.MyState> {
enum MyState { S1, S2 };
private MyState state;
...
@Override
public boolean isInState(MyState state) {
return state == this.state;
}
}
Если у вас есть пара enum
типов, определяющих состояния, подобные этому:
enum MyState { S1, S2 }
enum YourState { S1, S2 };
& hellip; и вы хотите иметь возможность спросить StateTracker
, находится ли он в каком-либо состоянии (определенном любым enum
, на самом деле, если только вы не объявите интерфейс маркера State
для реализации enum
), а затем создайте универсальный метод:
interface StateTracker {
<S extends Enum<S>> boolean isInState(S state);
}