Java - 如何从Proxy类获取注释?

时间:2016-01-22 05:54:40

标签: java reflection proxy annotations

我对代理类并不熟悉,我不知道这个(“注释”)如何成为代理对象。我可以从Proxy对象中检索注释吗?

public static void test(Annotation annotation) {
    System.out.println("ValidBoolean annotation len:" + ValidBoolean.class.getAnnotations().length);
    System.out.println(annotation.getClass().getName() + ":" + annotation.getClass().getAnnotations().length);
    if (annotation instanceof ValidBoolean) {
        ValidBoolean validBoolean = (ValidBoolean) annotation;
        System.out.println("[BOOLEAN]" + validBoolean.getClass().getName() + ":" + validBoolean.getClass().getAnnotations().length);
    }
}

结果是:

ValidBoolean annotation len:3
com.sun.proxy.$Proxy28:0
[BOOLEAN]com.sun.proxy.$Proxy28:0

1 个答案:

答案 0 :(得分:4)

我还没有真正理解这种代理机制。但是我可以通过annotation.annotationType()而不是annotation.getClass()得到Annotation真正的类,因为注释只是一个接口,因此annotation.getClass()只会产生一个Java代理对象!

看起来,Proxy对象并没有继承Annotations,这是我学到的最重要的事情。