我想知道一个班级是否是一个Enum,但我想我错过了一些东西:
if (test.MyEnum.class instanceof Enum<?>.class)
obj = resultWrapper.getEnum(i, test.MyEnum.class);
else
obj = resultWrapper.getObject(i);
它给我一个错误,说Enum.class无效。那我怎么能检查一个类是否是一个枚举?我很确定有可能确定,我只是无法得到它。
由于
答案 0 :(得分:108)
正确的语法是:
Enum.class.isAssignableFrom(test.MyEnum.class)
但是对于枚举,这是一个更方便的方法:
if (someObject.getClass().isEnum()))
更新:对于带有正文的枚举项(例如覆盖方法),这实际上不起作用。 在这种情况下,请使用
if (someObject instanceof Enum<?>)
<强>参考:强>
答案 1 :(得分:14)
如果您正在谈论Java 5新功能 - enum
(实际上并不是很新),那么这就是要走的路:
if (obj.getClass().isEnum()) {
...
}
如果Enum
是您的自定义类,那么只需检查obj instanceof Enum
。