如何在Java中获取所有枚举值?

How to get all enum values in Java?

我遇到了这个问题,我不知道实际的enum类型,我需要迭代它的可能值。

1
2
3
if (value instanceof Enum){
   Enum enumValue = (Enum)value;
}

有什么办法可以从EnumValue中提取出它的可能值吗?


1
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();


1
YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();

1
YourEnumClass[] yourEnums = YourEnumClass.values();


Enums与Classes的类型相同。当前代码只检查它是否是枚举,而不指定它是枚举的一部分的类型。

由于尚未指定枚举的类型,因此必须使用反射来确定枚举值列表是什么。

你可以这样做:

1
enumValue.getDeclaringClass().getEnumConstants()

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


枚举的值方法

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  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()?还是我错过了什么?