Как проверить, является ли java.lang.reflect.Type типом Enum - PullRequest
23 голосов
/ 23 января 2012

Я хочу проверить, представляет ли экземпляр java.lang.reflect.Type объект Emum или нет.

Я могу проверить, является ли это экземпляром определенного класса, используя == сравнения, например:

type == String.class // works

но, похоже, это не работает для класса Enum:

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

... это имеет смысл, поскольку экземпляр будет иметь конкретное перечисление, но я хотел бы проверить, является ли тип для любого перечисления или нет.

Может ли кто-нибудь объяснить мне очевидное, как определить, является ли Тип перечислением enum или нет, пожалуйста

Ответы [ 4 ]

34 голосов
/ 23 января 2012
if(type instanceof Class && ((Class<?>)type).isEnum())
8 голосов
/ 23 января 2012

Class.isEnum () сделает это за вас.

См. Oracle Doc

1 голос
/ 23 января 2012

Почему бы вам не использовать метод .equals для сравнения этого типа сравнений.== в основном используется для примитивных типов.

type.equals(Enum.class)

или, возможно, вам нужно сравнить свои собственные классы.

type.equals(MyClass.class)
0 голосов
/ 23 января 2012
if(type instanceof Class && (Class)type.getClass().isEnum()) {...}
...