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

如何检查java.lang.reflect.Type是否为枚举,java,class,reflection,types,enums,Java,Class,Reflection,Types,Enums,我想检查java.lang.reflect.Type实例是否表示Emum对象 我可以使用==比较来检查它是否是特定类的实例,例如: type == String.class // works 但这似乎不适用于Enum类: type == Enum.class // doesn't work 。。。这是有意义的,因为该实例将是一个特定的枚举,但我想检查该类型是否适用于任何枚举 有人能给我解释一下如何判断类型是否为枚举的明显方法吗请Class.isEnum()会帮你做的 请参阅为什么不使用.eq

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

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

type == String.class // works
但这似乎不适用于Enum类:

type == Enum.class // doesn't work
。。。这是有意义的,因为该实例将是一个特定的枚举,但我想检查该类型是否适用于任何枚举

有人能给我解释一下如何判断类型是否为枚举的明显方法吗请

Class.isEnum()会帮你做的


请参阅

为什么不使用.equals方法来比较此类比较。==主要用于基本类型

type.equals(Enum.class)
或者你可能需要比较你自己的课程

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

Class.isEnum()有什么问题?我使用类型对象,因为它支持基元类型。我希望能够调用isEnum(),但它不在objectfailed类型上。我无法理解您的注释。类实现了类型。我想你的第二个建议可以,但我需要它来处理任何枚举。。。不仅仅是那些显式定义的类型。getClass()返回'class',而不是我的enumah yes。。。恐怕@jtahlborn已经暗示了这一点。感谢您的努力,但您能否更具体地说明如何实现此功能?它将从您的示例转换为
type.isEnum()
。谢谢,我知道这是显而易见的
if(type instanceof Class && (Class)type.getClass().isEnum()) {...}
if(type instanceof Class && ((Class<?>)type).isEnum())