Как отметил Фолсер в своем ответе, единственный способ достичь этого - передать объект Class
, представляющий тип T
. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
100 * * * * * * * * * * * * * * * * * * * * * * * * *1007* * * * * * * * * * * * * * * * * * * * * * * * *
Вы, кажется, противостоите передаче объекта Class
, но это единственный способ использовать метод getEnumConstants()
. Вот отдельный пример:
public class Foo<T extends Enum<?> & Bar> {
final Class<T> clazz;
public Foo(Class<T> clazz) {
this.clazz = clazz;
}
public void baz() {
T[] constants = clazz.getEnumConstants();
System.out.println(Arrays.toString(constants));
}
public static void main(String[] args) {
new Foo<MyEnum>(MyEnum.class).baz(); //prints "[A, B, C, D]"
}
}
public interface Bar { }
public enum MyEnum implements Bar { A, B, C, D; }