Respostas:
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
getClass()
em um enum
objeto pode retornar um subtipo do enum
próprio tipo (se, digamos, a enum
constante substitui um método do enum
tipo). getDeclaringClass()
retorna o enum
tipo que declarou aquela constante, que é o que você deseja aqui.
Enum
s são como Class
es no sentido de que são digitados. Seu código atual apenas verifica se é um Enum sem especificar de que tipo de Enum faz parte.
Como você não especificou o tipo de enum, terá que usar reflexão para descobrir qual é a lista de valores de enum.
Você pode fazer assim:
enumValue.getDeclaringClass().getEnumConstants()
Isso retornará uma matriz de objetos Enum, com cada um sendo uma das opções disponíveis.
método de valores de enum
método enum.values () que retorna todas as instâncias de 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
Aqui, Role é um enum que contém os seguintes valores [ADMIN, USER, OTHER].
List<Role> roleList = Arrays.asList(Role.values());
roleList.forEach(role -> {
System.out.println(role);
});
Também é possível usar o java.util.EnumSet desta forma
@Test
void test(){
Enum aEnum =DayOfWeek.MONDAY;
printAll(aEnum);
}
void printAll(Enum value){
Set allValues = EnumSet.allOf(value.getClass());
System.out.println(allValues);
}