Как мне получить значение Enum, если я не знаю класс во время компиляции?

Я пытаюсь сделать следующее:

Class<?> cls = unknownClass;
if(cls.isEnum()){
    @SuppressWarnings("unchecked")
    Class<? extends Enum<?>> enumClass = (Class<? extends Enum<?>>) cls;
    Object val = Enum.valueOf(enumClass, "NAME1");
}

Но я получаю следующую ошибку:

Bound mismatch: The generic method valueOf(Class<T>, String) of type Enum<E> is 
not applicable for the arguments (Class<capture#5-of ? extends Enum<?>>, String). 
The inferred type capture#5-of ? extends Enum<?> is not a valid substitute for 
the bounded parameter <T extends Enum<T>>   

Кто-нибудь может сказать мне, что я делаю неправильно?

19
задан Tom Hawtin - tackline 10 March 2011 в 16:11
поделиться