我对Java有点新,所以也许我误解了java中注释的用例.我的问题如下:
在注释方法之后,我在检查方法的注释时会收到诸如$ Proxy31的类名.我很好奇为什么我收到的类似于我的注释的类名,以及我可以做些什么来解决这个问题.
Method m = this.remoteServiceClass.getMethod(rpcRequest.getMethod().getName()); RequiredPermission a = m.getAnnotation(RequiredPermission.class);
这会返回一个null注释,即使我知道它正在查找的方法已经实现了RequiredPermission注释.
for(Annotation a : m.getAnnotations()) { System.out.println(a.getClass().getName()); }
这将打印出$ Proxy31类名.
给定Annotation a,您需要调用annotationType(),而不是getClass()来确定注释的类型.Annotation对象只是一个代理,表示该类上的注释实例.
Object o = ...; Class c = o.getClass(); Annotation[] as = c.getAnnotations(); for (Annotation a : as) { // prints out the proxy class name System.out.println(a.getClass().getName()); // prints out the name of the actual annotation System.out.println(a.annotationType().getName()); }