检查一个类是否是 java.lang.Enum

我试图知道一个类是否是 Enum,但我想我漏掉了一些东西:

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

它给我一个错误,说明 Enum.class 是无效的。那么我如何检查一个类是否是 Enum 呢?我很确定这是可以确定的,只是我无法得到它。

谢谢

58634 次浏览

如果你在谈论 Java5的新特性—— enum(实际上它并不是很新) ,那么这就是解决方法:

if (obj.getClass().isEnum()) {


...
}

如果 Enum是您的自定义类,那么只需检查 obj instanceof Enum

正确的语法应该是:

Enum.class.isAssignableFrom(test.MyEnum.class)

但是对于枚举,这里有一个更方便的方法:

if (someObject.getClass().isEnum()))

更新: 对于带有主体的枚举项(例如覆盖方法) ,这实际上不起作用。 这样的话,就用

if (someObject instanceof Enum<?>)

参考文献: