Не используйте родовые связи.Не нужно.Просто используйте неограниченный тип, например:
public class State<T> {
public State(T startState) {
// whatever
}
}
И используйте его:
State<Days> dayState = new State<Days>(Days.SUNDAY);
Это простой типизированный класс, для которого не требуется граница.
Единственной границей, которая может иметь смысл, является привязка к enum
:
public class State<T extends Enum<T>> {
public State(T startState) {
// whatever
}
}
Эта версия требует, чтобы универсальный параметр был enum
.В этой версии приведенный выше пример использования будет по-прежнему компилироваться, но он не будет компилироваться (например):
State<String> dayState = new State<String>("hello");
, поскольку String
не является enum
.