如何检查java.lang.reflect.Type是否为Enum

时间:2012-01-23 15:47:30

标签: java class reflection types enums

我想检查java.lang.reflect.Type实例是否代表Emum对象。

我可以使用==比较来检查它是否是特定类的实例,例如:

type == String.class // works

但这似乎不适用于Enum类:

type == Enum.class // doesn't work

...这是有道理的,因为实例将是一个特定的枚举,但我想检查该类型是否适用于任何枚举。

有人可以向我解释如何判断Type是否为枚举

4 个答案:

答案 0 :(得分:33)

if(type instanceof Class && ((Class<?>)type).isEnum())

答案 1 :(得分:8)

Class.isEnum()会为你做。

请参阅Oracle Doc

答案 2 :(得分:1)

为什么不使用.equals方法来比较这种类型的比较。 ==主要用于原始类型。

type.equals(Enum.class)

或者您可能需要比较自己的课程。

type.equals(MyClass.class)

答案 3 :(得分:0)

if(type instanceof Class && (Class)type.getClass().isEnum()) {...}