Проблема с Class<? extends Enum<?>>
. Мы хотим E extends Enum<E>
, но мы не можем этого получить, потому что у нас есть два разных подстановочных знака.
Итак, нам нужно ввести общий параметр, который можно ввести, вызвав метод:
enum MyEnum {
ME;
}
public class EnName {
public static void main(String[] args) {
Enum<?> value = of(MyEnum.class, "ME");
System.err.println(value);
}
private static <E extends Enum<E>> E of(Class<E> clazz, String name) {
E value = Enum.valueOf(clazz, name);
return value;
}
}
Но отражение - это грязно и очень редко то, что вы хотите. Не делай этого.