Как получить все значения перечисления в Java?

Я столкнулся с этой проблемой, что я, не зная фактического типа enum, должен перебирать возможные значения.

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

Любые идеи, как извлечь из enumValue его возможные значения?

Ответ 1

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

Ответ 2

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

или

YourEnumClass[] yourEnums = YourEnumClass.values();

Ответ 3

Enum похожи на Class в том, что они напечатаны. Ваш текущий код просто проверяет, является ли он Enum, не указывая, к какому типу Enum он относится.

Поскольку вы не указали тип перечисления, вам придется использовать отражение, чтобы выяснить, что представляет собой список значений перечисления.

Вы можете сделать это так:

enumValue.getDeclaringClass().getEnumConstants() 

Это вернет массив объектов Enum, каждый из которых является одним из доступных параметров.

Ответ 4

метод значений enum

Метод enum.values(), который возвращает все экземпляры enum.

  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

Ответ 5

... или MyEnum.values ​​()? Или я что-то упускаю?

Ответ 6

Здесь Role - это перечисление, которое содержит следующие значения [ADMIN, USER, OTHER].

List<Role> roleList = Arrays.asList(Role.values());
roleList.forEach(role -> {
    System.out.println(role);
    });