Je suis tombé sur ce problème que je ne connaissais pas le type enum
dont j’ai besoin pour itérer ses valeurs possibles.
if (value instanceof Enum){
Enum enumValue = (Enum)value;
}
Des idées comment extraire d'enumValue ses valeurs possibles?
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();
Ou
YourEnumClass[] yourEnums = YourEnumClass.values();
Enum
s sont comme Class
es en ce sens qu'ils sont dactylographié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.
Comme vous n’avez pas spécifié le type d’énum, vous devrez utiliser la réflexion pour déterminer la liste des valeurs d’énum.
Vous pouvez le faire comme suit:
enumValue.getDeclaringClass().getEnumConstants()
Cela retournera un tableau d'objets Enum, chacun étant l'une des options disponibles.
méthode des valeurs d'énum
méthode enum.values () qui renvoie toutes les instances enum.
public class EnumTest {
private enum Currency {
PENNY("1 rs"), NICKLE("5 rs"), DIME("10 rs"), QUARTER("25 rs");
private String value;
private Currency(String brand) {
this.value = brand;
}
@Override
public String toString() {
return value;
}
}
public static void main(String args[]) {
Currency[] currencies = Currency.values();
// enum name using name method
// enum to String using toString() method
for (Currency currency : currencies) {
System.out.printf("[ Currency : %s,
Value : %s ]%n",currency.name(),currency);
}
}
}
http://javaexplorer03.blogspot.in/2015/10/name-and-values-method-of-enum.html
... ou MyEnum.values ()? Ou est-ce que je manque quelque chose?
Ici, le rôle est une énumération qui contient les valeurs suivantes [ADMIN, USER, OTHER].
List<Role> roleList = Arrays.asList(Role.values());
roleList.forEach(role -> {
System.out.println(role);
});