Lim*_*awk 4 java generics enums
我有一个类,我想在其中使用通用枚举类型,如下所示:
public class PageField<E extends Enum<E>>{
}
Run Code Online (Sandbox Code Playgroud)
看起来我应该能够在该类中拥有一个 getter 方法,然后可以返回一个枚举<E>
实例,如下所示:
public E getSelectedValue() {
String value = getValueFromElement(this.id);
return E.valueOf(value);
}
Run Code Online (Sandbox Code Playgroud)
但我不断收到以下错误:
类型参数“T”的推断类型“java.lang.Object”不在其范围内;应该扩展'java.lang.Enum'
我究竟做错了什么?这可能吗?
valueOf
您不能调用方法E
:它不是一个对象,它只是一个类型参数。
您应该做的是传递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);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,由于类型擦除,无法检索该类型的类E
,因此您需要显式地给出它。
归档时间: |
|
查看次数: |
6297 次 |
最近记录: |