Respuestas:
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
getClass()
en un enum
objeto puede devolver un subtipo del enum
tipo en sí (si, digamos, la enum
constante anula un método del enum
tipo). getDeclaringClass()
devuelve el enum
tipo que declaró esa constante, que es lo que desea aquí.
Enum
s son como Class
es en que se escriben. Su código actual simplemente verifica si es un Enum sin especificar de qué tipo de Enum es parte.
Debido a que no ha especificado el tipo de enumeración, tendrá que usar la reflexión para averiguar cuál es la lista de valores de enumeración.
Puedes hacerlo así:
enumValue.getDeclaringClass().getEnumConstants()
Esto devolverá una matriz de objetos Enum, cada uno de los cuales será una de las opciones disponibles.
método de valores de enumeración
enum.values () método que devuelve todas las instancias de enumeración.
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
Aquí, Role es una enumeración que contiene los siguientes valores [ADMIN, USER, OTHER].
List<Role> roleList = Arrays.asList(Role.values());
roleList.forEach(role -> {
System.out.println(role);
});
También se puede usar java.util.EnumSet así
@Test
void test(){
Enum aEnum =DayOfWeek.MONDAY;
printAll(aEnum);
}
void printAll(Enum value){
Set allValues = EnumSet.allOf(value.getClass());
System.out.println(allValues);
}