Я пытаюсь создать динамическую оболочку, которая использует отражение для доступа к свойствам объектов. Мой подход работает с разными объектами, но у меня все еще есть проблема с Enums.Как конфертировать из String в Enum динамически?
Предположим, у меня уже есть правильный сеттер и геттер, и я хочу вызвать их в разных ситуациях. Например, я пытаюсь сохранить заданное значение с помощью следующего кода:
public void save() {
try {
// Enums come in as Strings... we need to convert them!
if (this.value instanceof String && this.getter.getReturnType().isEnum()) {
// FIXME: HOW?
}
this.setter.invoke(this.entity, this.value);
}
catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
throw new RuntimeException("Die Eigenschaft " + this.property + " von Entity " + this.entity.getClass().getSimpleName() + " konnte nicht geschrieben werden!", ex);
}
}
Как преобразовать объект типа String в нужное значение Enum?
Я знаю о MyEnum.valueOf(String)
... но что, если я не могу назвать Enum в моем исходном коде? Мне не удалось использовать что-то вроде
this.value = Enum.valueOf(this.getter.getReturnType(), this.value);
Ну, я думаю, вы можете использовать '.getDeclaredFields()' из объекта класса ... – fge
Я знаю поле ... даже getter и setter. На данный момент я не могу преобразовать в соответствующий элемент Enum. –
В чем проблема с высказыванием this.value = YourEnum.valueOf (theString)? – dsharew