Java API生成Java源文件

我正在寻找一个生成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源文件。


有人知道这样的框架吗?


编辑:


我真的需要源文件。

我也想填写这些方法的代码。

我正在寻找一个高级抽象,而不是直接的字节码操作/生成。

我还需要对象树中的“类的结构”。

问题域很一般:生成大量非常不同的类,而没有“通用结构”。

解决方案

我已经根据您的答案发布了2个答案... CodeModel和Eclipse JDT。


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


HUH函数
浏览 703回答 3
3回答

胡说叔叔

Eclipse JDT的AST找到了解决方案谢谢,Giles。例如,使用以下代码:AST ast = AST.newAST(AST.JLS3);CompilationUnit cu = ast.newCompilationUnit();PackageDeclaration p1 = ast.newPackageDeclaration();p1.setName(ast.newSimpleName("foo"));cu.setPackage(p1);ImportDeclaration id = ast.newImportDeclaration();id.setName(ast.newName(new String[] { "java", "util", "Set" }));cu.imports().add(id);TypeDeclaration td = ast.newTypeDeclaration();td.setName(ast.newSimpleName("Foo"));TypeParameter tp = ast.newTypeParameter();tp.setName(ast.newSimpleName("X"));td.typeParameters().add(tp);cu.types().add(td);MethodDeclaration md = ast.newMethodDeclaration();td.bodyDeclarations().add(md);Block block = ast.newBlock();md.setBody(block);MethodInvocation mi = ast.newMethodInvocation();mi.setName(ast.newSimpleName("x"));ExpressionStatement e = ast.newExpressionStatement(mi);block.statements().add(e);System.out.println(cu);我可以得到以下输出:package foo;import java.util.Set;class Foo<X> {&nbsp; void MISSING(){&nbsp; &nbsp; x();&nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP