web-dev-qa-db-fra.com

Vérifier si une classe est Java.lang.Enum

J'essaie de savoir si une classe est un Enum, mais je pense qu'il me manque quelque chose:

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

Cela me donne une erreur en disant que Enum.class n'est pas valide. Alors, comment puis-je vérifier si une classe est une énumération? Je suis à peu près sûr qu'il est possible de le déterminer, je suis tout simplement incapable de l'obtenir.

Merci

61

La syntaxe correcte serait:

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

mais pour les énumérations, voici une méthode plus pratique:

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

Mise à jour: pour les éléments énumérés avec un corps (par exemple, qui remplacent les méthodes), cela ne fonctionnera pas réellement. Dans ce cas, utilisez

if (someObject instanceof Enum<?>)

Référence:

115
Sean Patrick Floyd

Si vous parlez de Java 5 nouvelle fonctionnalité - enum (ce n'est pas très nouveau en fait), alors c'est la voie à suivre:

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

...
}

Si Enum est votre classe personnalisée, vérifiez simplement que obj instanceof Enum.

14
Roman