@Override public <T> T get(Enum key, Class<T> resultClass, T defaultValue) { if (defaultValue == null) { try { String def = key.getDeclaringClass().getField(key.name()).getAnnotation(Default.class).value(); if (resultClass == String.class) return (T) def; return resultClass.getConstructor(String.class).newInstance(def); } catch (Exception e) { throw new RegisteredExceptionWrapper(e); } } return defaultValue; }