用于生成 Java 源文件的 Java API [已关闭]

2022-08-31 08:28:45

我正在寻找一个框架来生成Java源文件。

类似于以下 API:

X clazz = Something.createClass("package name", "class name");
clazz.addSuperInterface("interface name");
clazz.addMethod("method name", returnType, argumentTypes, ...);

File targetDir = ...;
clazz.generate(targetDir);

然后,应在目标目录的子目录中找到 Java 源文件。

有人知道这样一个框架吗?


编辑

  1. 我真的需要源文件。
  2. 我还想填写方法的代码。
  3. 我正在寻找一个高级抽象,而不是直接的字节码操作/生成。
  4. 我还需要对象树中的“类的结构”。
  5. 问题域是一般的:生成大量非常不同的类,没有“通用结构”。

解决方案
我已经发布了2基于您的答案的答案的答案...使用CodeModelEclipse JDT

我在我的解决方案中使用了CodeModel,:-)


答案 1

Sun 提供了一个名为 CodeModel 的 API,用于使用 API 生成 Java 源文件。这不是最容易获得信息的事情,但它就在那里,而且效果非常好。

获得它的最简单方法是作为JAXB 2 RI的一部分 - XJC模式到Java生成器使用CodeModel来生成其java源代码,它是XJC jars的一部分。您可以仅将其用于代码模型。

http://codemodel.java.net/ 抓取


答案 2

解决方案找到了 CodeModel
谢谢,skaffman

例如,使用此代码:

JCodeModel cm = new JCodeModel();
JDefinedClass dc = cm._class("foo.Bar");
JMethod m = dc.method(0, int.class, "foo");
m.body()._return(JExpr.lit(5));

File file = new File("./target/classes");
file.mkdirs();
cm.build(file);

我可以得到这个输出:

package foo;
public class Bar {
    int foo() {
        return  5;
    }
}

推荐