2013-10-22 47 views
1

我正在为Eclipse编写一个注释处理器。我创建了一个注释@MyAnnotation,旨在任何注册了@MyAnnotation的类别(例如A)都将拥有一个自动生成的“好友类”A_buddy,它位于与A相同的包中。Java注释处理,在与注释类相同的包中创建一个源文件

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

@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文件夹,这是不是我的愿望。

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

+1

为什么不写一个eclipse插件? – 2013-10-22 08:09:40

+0

@nikpon实际上,我正在寻找一种方法来实现这一点,我非常感谢你能为初学者提供一些很好的教程。 – asinkxcoswt

回答

2

打开项目属性对话框并转至Java Compiler -> Annotation Processor。如果您检查Enable project specific settings,则可以编辑生成的源目录以告知它将生成的类放到哪里。

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