生成带反射的Java源代码

时间:2012-04-24 07:29:22

标签: java templates reflection eclipse-jet

在我的Java应用程序中,我有一个类Foo

class Foo {
  String field1;
  String field2;
}

我想有一些生成的代码,它们在这个类的字段中使用反射 (虚构的模板语言)

#for each Field $f in Foo.class.getDeclaredFields()
  #writeFile $f.java
    public @interface $f {
    }

最终目标是让Field1.java和Field2.java在每个内部只有一个简单的@interface定义。

是否有可用的模板语言可以作为Maven构建过程的一部分进行生成?

我能找到的最接近的是JET,但是这个项目似乎更倾向于生成Java源,以便在运行时可用,而不是在编译时。从理论上讲,我可以使用AntRun以及几个Javac和Java任务来完成这项工作,但这很麻烦。

我需要的实际用例是为Google Guice生成BindingAnnotations(将在GWT源中使用,因此它们必须在编译时以.java文件的形式存在)。

2 个答案:

答案 0 :(得分:0)

查看Acceleo它基于XSL模板生成源代码。 我将它与EMF一起用于从用户设计的数据模型中生成源代码。

答案 1 :(得分:0)

我会建议两个选项:

  1. Apache Velocity:它提供的模板语言与您描述的内容非常接近。仔细研究here。你可能会对他们的引擎感兴趣。

  2. GWTP似乎做了类似于你想要做的事情。看起来他们正在使用注释处理器来执行代码生成。这是processor example,他们的项目主页为here