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

时间:2010-02-16 00:02:50

标签: java enums

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

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

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

7 个答案:

答案 0 :(得分:138)

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

答案 1 :(得分:76)

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

或者

YourEnumClass[] yourEnums = YourEnumClass.values();

答案 2 :(得分:13)

EnumClass类似,因为它们是键入的。您当前的代码只是检查它是否是Enum而没有指定它所属的Enum类型。

因为你没有指定枚举的类型,所以你必须使用反射来找出枚举值列表是什么。

你可以这样做:

enumValue.getDeclaringClass().getEnumConstants() 

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

答案 3 :(得分:9)

值枚举方法

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

答案 4 :(得分:5)

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

答案 5 :(得分:3)

这样也可以使用java.util.EnumSet

@Test
void test(){
    Enum aEnum =DayOfWeek.MONDAY;
    printAll(aEnum);
}

void printAll(Enum value){
    Set allValues = EnumSet.allOf(value.getClass());
    System.out.println(allValues);
}

答案 6 :(得分:1)

在这里,角色是一个枚举,其中包含以下值[ADMIN,USER,OTHER]。

 C:\xampp\mysql\bin> mysql -u username -p database_name < file.sql