Сотрудник столкнулся с интересной проблемой сегодня, и хотя я думаю, что реальный, общий ответ - «тот факт, что у нас есть эта проблема, означает, что мы делаем что-то не так», я решил все равно спросите.
Учитывая следующее:
public class CrazyEnumTest {
public class EnumeratedThing<T extends Enum<T>> {
public T myValue;
public EnumeratedThing(T value) {
myValue = value;
}
}
public static void main (String[] args) {
String className = args[0];
String enumValue = args[1];
Enum<?> value1 = Enum.valueOf(Class.forName(className), enumValue);
EnumeratedThing<?> thing1 = new EnumeratedThing(value1);
}
}
Я получаю следующую ошибку компиляции при вызове Enum.valueOf:
Bound mismatch: The generic method valueOf(Class<T>, String) of type Enum<E> is not applicable for the arguments (Class<capture#1-of ?>, String). The inferred type capture#1-of ? is not a valid substitute for the bounded parameter <T extends Enum<T>>
Итак, мой вопрос: возможно ли, учитывая только строковое представление имени перечисляемого типа, а также .name () одного из его значений, получить ссылку на соответствующий объект перечислимого типа в виде Enum