自定义构建注释的消费者在我的源代码中的位置是什么?

时间:2014-12-09 19:04:53

标签: java annotations

我在网上的一些教程中注意到,使用@interface关键字进行自定义注释的代码通常没有任何逻辑。环顾四周后,我发现消费者使用该注释查询该项目。这是我看到的链接: http://www.objectpartners.com/2010/08/06/how-do-annotations-work/

这里有代码可以找到注释并根据找到的内容进行操作。我的问题是,如果我做了一个注释,阻止在我的消费者去哪里使用字母a?我的注释@interface只是空的。消费者在编译时如何完成这项工作,例如?

我对注释的理解显然是有限的,所以希望我提出一个明确的问题。

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要编写注释处理器。

这是一个教程。 https://blogs.oracle.com/corejavatechtips/source-code-analysis-using-java-6-apis

这不是小事。

您必须编写自己的AnnotationProcessor

实现
@SupportedSourceVersion(SourceVersion.RELEASE_6)
@SupportedAnnotationTypes("*")
public class CodeAnalyzerProcessor extends AbstractProcessor {
    @Override
    public boolean process(Set<? extends TypeElement> annotations,
                          RoundEnvironment roundEnvironment) {
        for (Element e : roundEnvironment.getRootElements()) {
            System.out.println("Element is "+ e.getSimpleName());
            // Add code here to analyze each root element
         }
         return true;
    }
}

然后,要在编译期间使用它,您必须将类作为值传递给javac的-processor选项

javac -processor my.project.CodeAnalyzerProcessor TestClass.java