您无法创建实例,但至少要获取默认值
Settings.class.getMethod("a").getDefaultValue()Settings.class.getMethod("b").getDefaultValue()Settings.class.getMethod("c").getDefaultValue()然后,可以使用动态代理返回默认值。据我所知,这也是Java本身处理批注的方式。
class Defaults implements InvocationHandler { public static <A extends Annotation> A of(Class<A> annotation) { return (A) Proxy.newProxyInstance(annotation.getClassLoader(), new Class[] {annotation}, new Defaults()); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { return method.getDefaultValue(); }}Settings s = Defaults.of(Settings.class);System.out.printf("%sn%sn%sn", s.a(), s.b(), s.c());


