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

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

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

 type == String.class // works 

但这似乎不适用于Enum类:

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

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

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

 if(type instanceof Class && ((Class)type).isEnum()) 

Class.isEnum()会为你做。

请参阅Oracle Doc

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

 type.equals(Enum.class) 

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

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