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

Проверка класса java.lang.Enum

Я пытаюсь узнать, является ли класс Enum, но я думаю, что что-то не хватает:

if (test.MyEnum.class instanceof Enum<?>.class)
 obj = resultWrapper.getEnum(i, test.MyEnum.class);
else 
 obj = resultWrapper.getObject(i);

Это дает мне ошибку, говоря, что Enum.class недействителен. Итак, как я могу проверить, является ли класс Enum? Я уверен, что это можно определить, я просто не могу его получить.

Спасибо

4b9b3361

Ответ 1

Правильный синтаксис:

Enum.class.isAssignableFrom(test.MyEnum.class)

но для перечислений - более удобный метод:

if (someObject.getClass().isEnum()))

Обновление: для элементов перечисления с телом (например, для методов переопределения) это не будет работать. В этом случае используйте

if (someObject instanceof Enum<?>)

Справка:

Ответ 2

Если вы говорите о новой функции Java 5 - enum (она не очень новая на самом деле), то это путь:

if (obj.getClass().isEnum()) {

...
}

Если enum - ваш пользовательский класс, просто проверьте, что obj instanceof Enum.