我正在开发一个模块,我必须将一组逻辑表示和其他数据转换为Java源代码。
我希望能够首先将它们转换为Java元素(类,方法等)的中间表示,然后将此中间表示转换为实际的字符串/文本文件。
例如,我希望能够构建一个这样的元素:
JavaClass myClass = new JavaClass("MyClass", "MyParent", new String[] {"MyInterface", "MySecondInterface"});
然后让myClass输出的toString()方法输出如下:
class MyClass extends MyParent implements MyInterface, MySecondInterface { }
对于变量,方法,语句等等等 - 最好是格式化。这个例子仅仅是为了演示而过于简单 - 实际上我更喜欢一种至少类似于抽象语法树的表示。
我查看了com.sun.org.apache.bcel。*包,但由于它是用于字节码,所以在这里没什么用。转换框架(例如Recoder)似乎也不是我想要的。
有人可以推荐一个我可以使用的框架吗?
答案 0 :(得分:1)
你应该研究Javassist。它有一个非常简单的API用于动态创建类。
答案 1 :(得分:1)
您可以使用freemarker之类的模板引擎。写一个“类”模板并使用freemarker输入您的数据。使用起来非常简单。 Freemarker支持您需要的一切,如互动,条件......