java如何使用类加载器和注释
我试图从一个方法中获取注释,但遇到了一些问题。我要做的是使用URLClassLoader加载一个jar文件,然后使用反射和方法检查jar中类中方法的注释。getAnnotation
我遇到的问题是这种方法。getAnnotation将始终返回null,即使存在注释(我们可以使用Method.getAnnotations看到)。我在未使用URLClassLoader加载的类上对同一注释类型测试了相同的过程,效果良好
更深入的调查显示,这两个实例的规范名称。annotationType()和MyAnnotation。班级是一样的。不过,举个例子。annotationType()。equals(MyAnnotation.class)返回false。然而,实例本身是一个代理(com.sun.proxy)
有没有一种方法可以在不进行大量反射的情况下获取注释和注释字段
instance.annotationType().getMethod("value").invoke(instance)
上面的内容将用于获取字段,并遍历方法的结果。对规范名称进行字符串比较的getAnnotations会为我提供注释,但肯定有更好的方法吗
还有教育价值,这是什么原因?我猜这是因为系统类加载器加载的注释类与URL类加载器加载的注释类有所不同
# 1 楼答案
黑客解决方案如下:
而不是可访问的对象。getAnnotation(类annotationClass)使用
而不是MyAnnotation。value()用法