Jos*_*ial 63 java enums instanceof
我想知道一个班级是否是一个Enum,但我想我错过了一些东西:
if (test.MyEnum.class instanceof Enum<?>.class)
obj = resultWrapper.getEnum(i, test.MyEnum.class);
else
obj = resultWrapper.getObject(i);
Run Code Online (Sandbox Code Playgroud)
它给我一个错误,说Enum.class无效.那我怎么能检查一个类是否是一个枚举?我很确定有可能确定,我只是无法得到它.
谢谢
Sea*_*oyd 122
正确的语法是:
Enum.class.isAssignableFrom(test.MyEnum.class)
Run Code Online (Sandbox Code Playgroud)
但对于枚举,这是一个更方便的方法:
if (someObject.getClass().isEnum()))
Run Code Online (Sandbox Code Playgroud)
更新:对于具有正文的枚举项(例如,覆盖方法),这实际上不起作用.在那种情况下,使用
if (someObject instanceof Enum<?>)
Run Code Online (Sandbox Code Playgroud)
参考:
Rom*_*man 14
如果您正在谈论Java 5的新功能 - enum
(实际上并不是很新),那么这就是要走的路:
if (obj.getClass().isEnum()) {
...
}
Run Code Online (Sandbox Code Playgroud)
如果Enum
是您的自定义类,那么只需检查一下obj instanceof Enum
.