How to get all enum values in Java?

后端 未结 7 1592
独厮守ぢ
独厮守ぢ 2020-12-04 17:06

I came across this problem that I without knowing the actual enum type I need to iterate its possible values.

if (value instanceof Enum){
   Enu         


        
相关标签:
7条回答
  • 2020-12-04 17:40

    values method of enum

    enum.values() method which returns all enum instances.

      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

    0 讨论(0)
  • 2020-12-04 17:46

    ... or MyEnum.values() ? Or am I missing something?

    0 讨论(0)
  • 2020-12-04 17:49
    YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();
    

    Or

    YourEnumClass[] yourEnums = YourEnumClass.values();
    
    0 讨论(0)
  • 2020-12-04 17:50

    Enums are just like Classes in that they are typed. Your current code just checks if it is an Enum without specifying what type of Enum it is a part of.

    Because you haven't specified the type of the enum, you will have to use reflection to find out what the list of enum values is.

    You can do it like so:

    enumValue.getDeclaringClass().getEnumConstants() 
    

    This will return an array of Enum objects, with each being one of the available options.

    0 讨论(0)
  • 2020-12-04 17:53
    Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
    
    0 讨论(0)
  • 2020-12-04 17:54

    One can also use the java.util.EnumSet like this

    @Test
    void test(){
        Enum aEnum =DayOfWeek.MONDAY;
        printAll(aEnum);
    }
    
    void printAll(Enum value){
        Set allValues = EnumSet.allOf(value.getClass());
        System.out.println(allValues);
    }
    
    0 讨论(0)
提交回复
热议问题