Je suis tombé sur ce problème que j'ai sans connaître le enum
type réel dont j'ai besoin pour itérer ses valeurs possibles.
if (value instanceof Enum){
Enum enumValue = (Enum)value;
}
Des idées comment extraire de enumValue ses valeurs possibles?
getClass()
qu'unenum
objet peut renvoyer un sous -enum
type du type lui-même (si, par exemple, laenum
constante remplace une méthode duenum
type).getDeclaringClass()
renvoie leenum
type qui a déclaré cette constante, ce que vous voulez ici.Ou
la source
YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();
a résolu mon problème d'appel à partir d'une méthode non statique.Enum
s sont commeClass
es en ce sens qu'ils sont tapés. Votre code actuel vérifie simplement s'il s'agit d'un Enum sans spécifier le type d'Enum dont il fait partie.Étant donné que vous n'avez pas spécifié le type de l'énumération, vous devrez utiliser la réflexion pour savoir quelle est la liste des valeurs d'énumération.
Vous pouvez le faire comme ceci:
Cela renverra un tableau d'objets Enum, chacun étant l'une des options disponibles.
la source
values méthode d'énumération
enum.values () qui renvoie toutes les instances enum.
http://javaexplorer03.blogspot.in/2015/10/name-and-values-method-of-enum.html
la source
... ou MyEnum.values ()? Ou est-ce que je manque quelque chose?
la source
Ici, Role est une énumération qui contient les valeurs suivantes [ADMIN, USER, OTHER].
la source
On peut également utiliser le java.util.EnumSet comme ceci
la source