Java Annotation Processing,在与注释类相同的包中创建源文件

时间:2013-10-22 08:04:55

标签: java eclipse annotations

我正在Eclipse中为Java编写注释处理器。我创建了一个注释@MyAnnotation,旨在使用A保护的任何类(@MyAnnotation)都有一个自动生成的“伙伴类”A_buddy,它位于与A相同的包裹。

所以,我正在创建注释处理器来完成工作。以下是代码。

@SupportedAnnotationTypes("MyAnnotation")
@SupportedSourceVersion(SourceVersion.RELEASE_7)
public class MyAnnotationProcessor extends AbstractProcessor {

    @Override
    public boolean process(Set<? extends TypeElement> annotations,
        RoundEnvironment roundEnv) {

        //find and process the annotated class
        ...
        String annotatedClassName = ...; //the name of the annotated class.
        PackageElement pkgElement = ...; //the package of the annotated class.

        //create the source file
        String buddyClassName = annotatedClassName + "_buddy";
        JavaFileObject jfo = processingEnv.getFiler().createSourceFile(buddyClassName, pkgElement);
        Writer writer = jfo.openWriter();

        writer.write("Hello, buddy");
        writer.close();

保存并在Eclipse中构建代码,伙伴文件放在.apt-generated文件夹中,这不是我想要的。

如何将生成的源文件放在与注释类相同的包中,以便我可以像手动创建它一样引用它?例如,如果带注释的类是{{ 1}},我希望当我在Eclipse中保存代码时,我会得到自动生成的类mypackage.A,以便我可以立即在代码的其他部分引用它。

1 个答案:

答案 0 :(得分:2)

打开项目属性对话框,然后转到Java Compiler -> Annotation Processor。如果您检查Enable project specific settings,则可以编辑生成的源目录,告诉它将生成的类放在何处。

或者,如果您只想引用其他代码中的类,可以在项目属性.apt_generated部分中将Java Build Path文件夹添加为源文件夹。