我有一个类,我想在其中使用通用枚举类型,如下所示:
public class PageField<E extends Enum<E>>{
}
似乎我应该能够在该类中有一个 getter 方法,然后可以返回一个枚举 <E>
例如,像这样:
public E getSelectedValue() {
String value = getValueFromElement(this.id);
return E.valueOf(value);
}
但我不断收到以下错误:
Inferred type 'java.lang.Object' for type parameter 'T' is not within its bound; should extend 'java.lang.Enum'
我做错了什么?这可能吗?
最佳答案
您不能在 E
上调用方法 valueOf
:它不是一个对象,它只是一个类型参数。
您应该做的是传递当前枚举类型参数的 Class
,以便您可以使用它来检索枚举值:
public class PageField<E extends Enum<E>>{
private Class<E> enumClass;
public PageField(Class<E> enumClass) {
this.enumClass = enumClass;
}
public E getSelectedValue() {
String value = getValueFromElement(this.id);
return Enum.valueOf(enumClass, value);
}
}
不幸的是,由于类型删除,无法检索类型 E
的类,因此您需要明确地给出它。
关于java - 如何在 Java 中使用通用枚举类型从类返回枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32354613/