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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

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

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

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

提问于
用户回答回答于

正确的语法是:

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

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

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

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

if (someObject instanceof Enum<?>)

参考:

用户回答回答于

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

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

...
}

如果Enum是你的自定义班,那么就检查一下obj instanceof Enum

扫码关注云+社区