如何获得Java中的所有枚举值?
我遇到这个问题,我不知道实际的enum
types,我需要迭代其可能的值。
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()? 还是我错过了什么?