有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用javassist检查运行时注释

当尝试在运行时使用Javassist检查代码时,我需要查看注释。举个简单的例子:

ClassPool pool = ClassPool.getDefault();
CtClass clazz = pool.getCtClass("org.junit.Test");
boolean found = false;
for (Object annotation : clazz.getAvailableAnnotations()) {
    if ("java.lang.annotation.Target".equals(annotation.getClass().getName())) {
        found = true;
    }
}

问题是这段代码从不设置found = true。返回的注释类包括:

com.sun.proxy.$Proxy8
com.sun.proxy.$Proxy9

你知道如何得到实际的注释而不是代理吗?或者如何从代理中获取实际注释


共 (1) 个答案

  1. # 1 楼答案

    注释对象不是注释类型的直接实例,而是实现注释接口的某些(本例中为代理)对象的实例

    试试if (annotation instanceof java.lang.annotation.Target)