检查类是否为java.lang.Enum

时间:2010-11-12 16:00:45

标签: java enums instanceof

我想知道一个班级是否是一个Enum,但我想我错过了一些东西:

if (test.MyEnum.class instanceof Enum<?>.class)
 obj = resultWrapper.getEnum(i, test.MyEnum.class);
else 
 obj = resultWrapper.getObject(i);

它给我一个错误,说Enum.class无效。那我怎么能检查一个类是否是一个枚举?我很确定有可能确定,我只是无法得到它。

由于

2 个答案:

答案 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