Réponses:
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
getClass()
qu'un enum
objet peut renvoyer un sous - enum
type du type lui-même (si, par exemple, la enum
constante remplace une méthode du enum
type). getDeclaringClass()
renvoie le enum
type qui a déclaré cette constante, ce que vous voulez ici.
Enum
s sont comme Class
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:
enumValue.getDeclaringClass().getEnumConstants()
Cela renverra un tableau d'objets Enum, chacun étant l'une des options disponibles.
values méthode d'énumération
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
Ici, Role 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);
});
On peut également utiliser le java.util.EnumSet comme ceci
@Test
void test(){
Enum aEnum =DayOfWeek.MONDAY;
printAll(aEnum);
}
void printAll(Enum value){
Set allValues = EnumSet.allOf(value.getClass());
System.out.println(allValues);
}