Java代码生成(元编程,反射,wtv)

时间:2010-04-12 16:44:49

标签: java reflection code-generation metaprogramming codedom

有没有人知道Java的工具(类似于C#的codedom),它提供了一种为.java文件生成Java代码的方法?

修改的: 我正在建立一个平台,其主要目标是自动化操作。提供一些输入,我想为外部工具生成代码。所以它不是运行时生成的。我想生成并输出到实际文件。

5 个答案:

答案 0 :(得分:1)

JET可能已过时(我没有使用它)JET Tutorial Part 1

Eclipse的更多插件Plugins in Code Generation

编辑: 抱歉,我不知道编码器以及此工具的含义。

独立版是FreemarkerVelocity另见example

答案 1 :(得分:1)

ABSE和AtomWeaver构成了代码生成和模型驱动开发框架,您可以轻松实现所需的内容。 ABSE是一种新方法,您可以从较小的位(称为Atoms)编写代码生成器,而AtomWaver是一个简单的IDE,可让您实现,操作和使用生成器模型。

它还允许非程序员构建程序/配置/任何由已经构建的部件(您之前准备的Atoms)制作的程序/配置。

这个项目现在正在公开发布,现在正在提供alpha版本。 ABSE是开放的,AtomWeaver可以免费用于个人和商业用途。

在此处获取更多信息:http://www.abse.info(免责声明:我是项目负责人)

答案 2 :(得分:0)

我使用 ASM 成功地修改了字节码级别的现有类,或者动态生成全新的类。 tutorial以一种非常容易理解的方式引导您完成此任务。

ASM 像大多数此类工具一样生成字节码而不是源代码。这样做的原因是,如果要从程序中动态生成和执行新代码,从历史上看,调用Java编译器并不是直接的。因此,生成和使用字节码通常比源更容易。

如果您需要在程序中立即生成并运行代码,我建议您使用字节码操作工具。如果你需要的只是Java源码,我会推出自己的代码生成器,它采用我的输入格式并生成代码。你可能想找一个framework来帮助你,但由于源文件只是文本,通常你自己创建它也很容易,特别是如果你有自定义输入格式。

答案 3 :(得分:0)

你可以尝试使用现有的语法(例如来自ANTLR)并构建AST。然后从AST生成代码。这应该比简单的模板更强大。对于中间的事情,我建议Terence Parr谈论StringTemplate(开眼界)。 (抱歉,没有手头谈话的链接)

答案 4 :(得分:0)

我不确定你真正需要什么,但看看javassist。这是你要找的东西吗?