java – 从AnnotationMirror获取元素注释

是否有更好的方法从AnnotationMirror获取元素注释?这对我来说真是太烂了.

for (AnnotationMirror annotationMirror : element.getAnnotationMirrors()) {
    try {
        Class annotationClass = Class.forName(annotationMirror.getAnnotationType().toString());
        Annotation annotation = element.getAnnotation(annotationClass);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}

最佳答案 简短的回答是:它无法完成 – 您必须使用Class.forName().

javax.lang.model包(和子包)用于处理源代码(主要用例为annotation processors).在这些情况下,您通常尚未为您正在处理的Element生成二进制工件(即.class文件),因此调用Class.forName()可能会失败.

如果您可以在获得元素之后向我们提供有关元素来源或您希望如何处理注释的更多详细信息,我们可能会提供更多指导. annotationMirror.getAnnotationType()返回的DeclaredType很可能以比Annotation更可靠的方式访问您所访问的信息.

点赞