Проверка класса 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? Я уверен, что это можно определить, я просто не могу его получить.
Спасибо
Ответы
Ответ 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
.