Ale*_*lex 3 java generics enums
我想创建一个Enum编辑器,它将Enum类型作为其泛型.E是泛型类型,但仅限于Enum类型.如何从实例e中获取Enum类的值?
public class ComboBoxEnumEditor<E extends Enum<E>>{
public ComboBoxEnumEditor(E e) {
// how to get values of E from e?
// attemp1:
List values = e.getClass().values();
// attemp2:
List values = ((Enum.class)e.getClass()).values();
// attemp3:
List values = ((Enum.class)e.getClass()).values();
// none of the above works...
}
}
Run Code Online (Sandbox Code Playgroud)
说我有一个枚举
public enum Location {
Default( false, EAttributeLocation.MAIN_TABLE_IF_AVAILABLE ),
Main( false, EAttributeLocation.MAIN_TABLE ),
Overflow( false, EAttributeLocation.OVERFLOW_TABLE ),
Separate( false, EAttributeLocation.SEPARATE_TABLE );
......
}
Run Code Online (Sandbox Code Playgroud)
我希望我的ComboBoxEnumEditor能够做到
{
ComboBoxEnumEditor(new Location());
}
Run Code Online (Sandbox Code Playgroud)
请帮忙,谢谢.
Psh*_*emo 14
看起来你在寻找(但我可能会弄错)
Enum[] values = e.getClass().getEnumConstants();
Run Code Online (Sandbox Code Playgroud)
或者正如@pbabcdefp在这个答案中提到的那样(对他来说是大+1)如果你想要E[]而不是Enum[]
E[] values = e.getDeclaringClass().getEnumConstants();
Run Code Online (Sandbox Code Playgroud)
也基于
......将Enum类作为其通用类
你的论点应该Class<E> clazz不是E e本身,所以你可以使用它ComboBoxEnumEditor(Location.class);.在这种情况下,你可以简单地使用
E[] values = clazz.getEnumConstants();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1916 次 |
| 最近记录: |