2012-11-10 54 views
5

什么是“好”的java代码生成库? 我在JaxMe中发现了一代人,但它很差,很老。 我喜欢通过java代码生成java代码。所以基本上使用一个lib来告诉它必须生成一个具体的类或接口与X领域,Y方法等等,然后写入文件系统..我知道框架使用它们,但不能找到一个独立的库.. - 埃德寻找一个java代码生成库

+1

如果您的程序知道想要生成的类的名称以及所有成员的名称和内容,您为什么需要代码生成器?输出流的打印语句不会足够吗?有趣的代码生成器必须自己添加一些东西才有用。 –

+0

您所谈论的信息事先并不知晓,即使知道,您正在讨论由于法律变化每年都会发生变化的大量信息... 示例:您想用于生成的xbrl/xsd代码和相应的验证... – edbras

+0

重复的http://stackoverflow.com/questions/121324/a-java-api-to-generate-java-source-files –

回答

1

也许你应该对cglib感兴趣吗?

3

有几个图书馆有各种功能和易用性:

你可能要看一看每个API的确定e哪一个更适合你的目的。

+4

这些所有(除了可能cglib)似乎是字节代码编辑工具,而不是源代码生成器... –

+0

感谢您的反馈,但正如已经提到的,这些主要是字节代码生成器,而我正在谈论源代码生成器。我注意到没有一个成熟的独立源代码生成器项目,但主要是像codemodel和apache JaxMe这样的子项目,它通常是“老” – edbras

+0

@edbras:我以为你在哪里询问字节码生成,因为是大多数人在讨论Java代码生成时的意思。通常,代码生成器旨在允许使用更高级别的抽象。考虑到输出已经是Java * source *代码,您的情况会是什么样的抽象? – thkala

0

我喜欢ASM最好。它使用访问者模式,当您生成代码时,可能会有点混淆;但一旦你掌握了它,它真的很干净容易。

0

我已经看了一会儿,并且很难找到有用的东西。最有希望的候选人,我发现实际上是内置到编译器:

Java annotation processing (APT)

他们最近包括APT用javac,所以它总是可用。

我还没有太多的时间去研究它,但乍一看,它似乎无限强大(生成/修改源代码或字节代码,抛出错误,警告,...),但它可以将你的头围绕起来有点复杂。那里可能有一些很好的教程,但我目前没有针对你的特定链接。

+0

注解处理听起来很神奇,直到你真正尝试使用它。上次我检查时,你必须跳过令人难以置信的圈数,例如得到当前的源文件,你*仍然*需要混淆你的构建系统使用它...有时我只是想念C预处理器... – thkala