Antworten:
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
getClass()
auf einem enum
Objekt möglicherweise ein Subtyp des enum
Typs selbst zurückgegeben wird (wenn beispielsweise die enum
Konstante eine Methode aus dem enum
Typ überschreibt ). getDeclaringClass()
Gibt den enum
Typ zurück, der diese Konstante deklariert hat. Dies ist das, was Sie hier wollen.
Enum
s sind genau wie Class
es darin, dass sie getippt sind. Ihr aktueller Code prüft nur, ob es sich um eine Aufzählung handelt, ohne anzugeben, zu welcher Art von Aufzählung er gehört.
Da Sie den Typ der Aufzählung nicht angegeben haben, müssen Sie Reflection verwenden, um herauszufinden, wie die Liste der Aufzählungswerte lautet.
Sie können es so machen:
enumValue.getDeclaringClass().getEnumConstants()
Dadurch wird ein Array von Enum-Objekten zurückgegeben, von denen jedes eine der verfügbaren Optionen ist.
Werte Methode der Aufzählung
enum.values () -Methode, die alle Enum-Instanzen zurückgibt.
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
Hier ist Role eine Aufzählung, die die folgenden Werte enthält [ADMIN, USER, OTHER].
List<Role> roleList = Arrays.asList(Role.values());
roleList.forEach(role -> {
System.out.println(role);
});
Man kann auch das java.util.EnumSet so verwenden
@Test
void test(){
Enum aEnum =DayOfWeek.MONDAY;
printAll(aEnum);
}
void printAll(Enum value){
Set allValues = EnumSet.allOf(value.getClass());
System.out.println(allValues);
}