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

我想知道如果一个类是一个枚举,但我想我错过了一些东西:

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

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

谢谢

正确的语法是:

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

但对枚举来说,这是一个更方便的方法:

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

更新:对于具有正文的枚举项目(例如,覆盖方法),这实际上不会工作。 在这种情况下,使用

 if (someObject instanceof Enum<?>) 

参考:

  • Class.isEnum()

如果你正在谈论Java 5的新function – enum (实际上并不是很新),那么这是一条路:

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

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