如何检查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())