检查类是否是 java.lang.Enum

2022-08-31 13:36:34

我试图知道一个类是否是枚举,但我认为我错过了一些东西:

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

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

谢谢


答案 1

正确的语法是:

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

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

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

更新:对于具有正文的枚举项(例如,重写方法),这实际上不起作用。在这种情况下,请使用

if (someObject instanceof Enum<?>)

参考:


答案 2

如果你正在谈论Java 5的新功能 - (实际上它不是很新),那么这就是要走的路:enum

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

...
}

如果 是您的自定义类,则只需检查 .Enumobj instanceof Enum