Eu me deparei com esse problema sem saber o enum
tipo real de que preciso para iterar seus valores possíveis.
if (value instanceof Enum){
Enum enumValue = (Enum)value;
}
Alguma idéia de como extrair de enumValue seus valores possíveis?
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
getClass()
em umenum
objeto pode retornar um subtipo doenum
próprio tipo (se, digamos, aenum
constante substitui um método doenum
tipo).getDeclaringClass()
retorna oenum
tipo que declarou aquela constante, que é o que você deseja aqui.Ou
fonte
YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();
resolveu meu problema de chamada de um método não estático.Enum
s são comoClass
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:
Isso retornará uma matriz de objetos Enum, com cada um sendo uma das opções disponíveis.
fonte
método de valores de enum
método enum.values () que retorna todas as instâncias de enum.
http://javaexplorer03.blogspot.in/2015/10/name-and-values-method-of-enum.html
fonte
... ou MyEnum.values ()? Ou eu estou esquecendo de alguma coisa?
fonte
Aqui, Role é um enum que contém os seguintes valores [ADMIN, USER, OTHER].
fonte
Também é possível usar o java.util.EnumSet desta forma
fonte