Réponses:
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
getClass()qu'un enumobjet peut renvoyer un sous - enumtype du type lui-même (si, par exemple, la enumconstante remplace une méthode du enumtype). getDeclaringClass()renvoie le enumtype qui a déclaré cette constante, ce que vous voulez ici.
Enums sont comme Classes 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);
}