如何获得Java中的所有枚举值?

我遇到这个问题,我不知道实际的enumtypes,我需要迭代其可能的值。

 if (value instanceof Enum){ Enum enumValue = (Enum)value; } 

任何想法如何从enumValue中提取其可能的值?

 Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants(); 
 YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants(); 

要么

 YourEnumClass[] yourEnums = YourEnumClass.values(); 

Enum Class只是lyke Class ,因为它们是键入的。 你当前的代码只是检查它是否是一个枚举,而不指定它是什么types的枚举。

因为你没有指定枚举的types,你将不得不使用reflection来找出列表的枚举值是什么。

你可以这样做:

 enumValue.getDeclaringClass().getEnumConstants() 

这将返回一个Enum对象数组,每个对象都是可用的选项之一。

枚举的值方法

返回所有枚举实例的enum.values()方法。

枚举的值方法

返回所有枚举实例的enum.values()方法。

  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

…或MyEnum.values()? 还是我错过了什么?