Я столкнулся с этой проблемой, что я, не зная фактического типа enum
, должен перебирать возможные значения.
if (value instanceof Enum){
Enum enumValue = (Enum)value;
}
Любые идеи, как извлечь из enumValue его возможные значения?
Я столкнулся с этой проблемой, что я, не зная фактического типа enum
, должен перебирать возможные значения.
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
в том, что они напечатаны. Ваш текущий код просто проверяет, является ли он Enum, не указывая, к какому типу Enum он относится.
Поскольку вы не указали тип перечисления, вам придется использовать отражение, чтобы выяснить, что представляет собой список значений перечисления.
Вы можете сделать это так:
enumValue.getDeclaringClass().getEnumConstants()
Это вернет массив объектов Enum, каждый из которых является одним из доступных параметров.
метод значений 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
... или MyEnum.values ()? Или я что-то упускаю?
Здесь Role - это перечисление, которое содержит следующие значения [ADMIN, USER, OTHER].
List<Role> roleList = Arrays.asList(Role.values());
roleList.forEach(role -> {
System.out.println(role);
});