Проверка, является ли класс java.ленг.Перечисление


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

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

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

спасибо

2 56

2 ответа:

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

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

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

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

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

if (someObject instanceof Enum<?>)

ссылки:

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

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

...
}

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