package com.galvarez.ttw.utils; public final class EnumValue<E extends Enum<E>> { private final E defaultValue; private final Class<E> enumClass; private E value; @SuppressWarnings("unchecked") public EnumValue(E defaultValue) { this.defaultValue = defaultValue; this.enumClass = (Class<E>) defaultValue.getClass(); this.value = defaultValue; } public void set(E value) { this.value = value != null ? value : defaultValue; } public void set(String text) { try { if (text != null && !text.isEmpty()) value = Enum.valueOf(enumClass, text); else value = defaultValue; } catch (Exception e) { value = defaultValue; } } public E get() { return value; } @Override public String toString() { return String.valueOf(value); } }