Проверка, является ли класс java.lang.Enum - PullRequest
59 голосов
/ 12 ноября 2010

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

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

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

Спасибо

Ответы [ 2 ]

112 голосов
/ 12 ноября 2010

Правильный синтаксис будет:

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

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

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

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

if (someObject instanceof Enum<?>)

Справка:

14 голосов
/ 12 ноября 2010

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

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

...
}

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

...