Подтвердить что ты не робот

Как проверить, является ли java.lang.reflect.Type Enum

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

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

type == String.class // works

но это не похоже на класс Enum:

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Обратитесь к Oracle Doc

Ответ 3

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

type.equals(Enum.class)

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

type.equals(MyClass.class)

Ответ 4

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