Я пытаюсь написать служебный метод, который будет принимать enum
любого типа и возвращать enum
того же типа , но с другим значением.
Предположим, у меня есть следующие два enum
:
enum Pet {
DOG("Puppy"),
CAT("Jazmine"),
LIZARD("Spock");
private final String value;
Pet(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
enum Topping {
PEPPERONI("Meat Saucers"),
ONION("Like Ogres"),
ANCHOVIES("Spicy Fish");
private final String value;
Topping(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
В моем приложении пользователю нужна возможность «редактировать» значение enum
. Например, когда пользователь хочет отредактировать свой Pet
, ему предоставляется список значений enum
, и он может выбрать новое из этого списка.
Я пытаюсь сделать следующее: напишите один метод, который может обрабатывать любое количество различных типов enum
(ie: и Pet
, и Topping
).
Поскольку я еще не очень хорошо знаком с дженериками, вот очень плохо "закодированный" пример того, что я пытаюсь сделать:
public static GenericEnumType changeValue(Enum<?> e) {
// Present user with list of e.values(), user can select new value
String newValue = getUserInput();
return GenericEnumType.valueOf(newValue);
}
Есть ли способ выполнить sh такую вещь? Из своего исследования я обнаружил, что получить значения из generi c enum
может быть сложно, потому что метод values()
фактически недоступен во время компиляции.