我试图知道一个类是否是 Enum,但我想我漏掉了一些东西:
if (test.MyEnum.class instanceof Enum<?>.class) obj = resultWrapper.getEnum(i, test.MyEnum.class); else obj = resultWrapper.getObject(i);
它给我一个错误,说明 Enum.class 是无效的。那么我如何检查一个类是否是 Enum 呢?我很确定这是可以确定的,只是我无法得到它。
谢谢
如果你在谈论 Java5的新特性—— enum(实际上它并不是很新) ,那么这就是解决方法:
enum
if (obj.getClass().isEnum()) { ... }
如果 Enum是您的自定义类,那么只需检查 obj instanceof Enum。
Enum
obj instanceof Enum
正确的语法应该是:
Enum.class.isAssignableFrom(test.MyEnum.class)
但是对于枚举,这里有一个更方便的方法:
if (someObject.getClass().isEnum()))
更新: 对于带有主体的枚举项(例如覆盖方法) ,这实际上不起作用。 这样的话,就用
if (someObject instanceof Enum<?>)
参考文献:
Class.isEnum()