如果给定的枚举是泛型类的参数,我如何访问枚举的静态方法?
考虑以下示例
public class EnumListBox<T extends Enum<T>> extends ListBox implements LeafValueEditor<T>
{
@Override
public void setValue(T value)
{
// something..
}
@Override
public T getValue()
{
int ndx = getSelectedIndex();
String val = getValue(ndx);
return T.valueOf(val);
}
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因Enum<?>.valueOf(String)
,我无法使用.此方法的另一个版本有两个参数,Class<Enum<?>>
并且我希望无法实例化T.class
.
你会如何解决这个问题?基本上我想要任何枚举的通用ListBox包装器.
最简单的解决方法是在构造函数中传递枚举类的实例EnumListBox
.
public class EnumListBox<T extends Enum<?>> extends ListBox implements LeafValueEditor<T>
{
private final Class<T> mClazz;
public EnumListBox(Class<T> clazz) {
mClazz = clazz;
}
@Override
public T getValue()
{
int ndx = getSelectedIndex();
String val = getValue(ndx);
return Enum.valueOf(mClazz, val);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2241 次 |
最近记录: |