寻找一个Java代码生成库

7

什么是“好的”java代码生成库? 我在JaxMe中发现了一部分生成内容,但它很差而且过时。 我喜欢通过Java代码生成Java代码。因此,基本上使用库来告诉它必须生成具有X字段、Y方法等的某个具体类或接口,然后写入文件系统。 我知道框架使用它们,但找不到一个独立的库.. - Ed


1
如果你的程序知道它想要生成的类的名称,以及所有成员的名称和内容,那么你为什么还需要代码生成器呢?难道将输出语句打印到输出流中不足够吗?有趣的代码生成器必须自己添加一些东西才能发挥作用。 - Ira Baxter
你所说的信息事先是不知道的,即使知道,你也在谈论一大堆由于法律变化而每年都在变化的信息... 例如:你想要使用的XBRL / XSD以生成代码和相应的验证。 - edbras
一个生成Java源文件的Java API的副本。 - Adam Gent
4个回答

1

有几个具有不同功能和易用性的库:

您可能需要查看每个API以确定哪个更适合您的目的。


7
除了cglib可能是字节码编辑工具外,这些工具似乎都是字节码编辑工具,而不是源代码生成器。 - Markus A.
感谢您的反馈,但正如我已经提到的,这些主要是字节码生成器,而我所说的是源代码生成器。我注意到并没有成熟的独立源代码生成器项目,而大多数都是子项目,例如codemodel和apache JaxMe...通常都是“旧的”。 - edbras
@edbras:我以为你在问字节码生成,因为当谈到Java中的代码生成时,大多数人都是指这个。一般来说,代码生成器旨在允许使用更高级别的抽象。考虑到输出已经是Java 代码,那么在你的情况下,那种抽象会是什么呢? - thkala
抱歉表述不够清晰。 例如:我使用的xbrl/xsd文件用于生成包括验证(maxOccurs/minOccurs/fractionDigits等)在内的代码。我读取这个文件,然后生成源代码,目前使用Apache JaxMe子项目来生成源代码。 - edbras

0

也许你会对cglib感兴趣?


0

我最喜欢ASM。它使用访问者模式,在生成代码时可能会有点令人困惑;但一旦掌握,它就非常干净和易于理解。


0

我之前也曾经研究过这个问题,但是很难找到有用的信息。最有希望的候选者实际上是内置在编译器中的:

Java注解处理(APT)

他们最近将APT与javac一起发布,因此它始终可用。

我还没有太多时间来研究它,但是乍一看,它似乎无限强大(生成/修改源代码或字节码,抛出错误、警告等),但可能有点复杂。可能会有一些好的教程,但我目前没有具体的链接。


注解处理听起来很神奇,直到你试图使用它。上一次我检查时,你必须跳过难以置信的多个障碍,例如获取当前源文件,而且你仍然需要修改你的构建系统才能使用它……有时候我只是想念 C 预处理器… - thkala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接