我正在使用一个为我生成大量java代码的API。
但是这个API没有正确处理导入,所以它写了每个类的完全限定名。例如:
public class Foo{
com.my.company.Bar bar;
public com.my.company.Bar getBar(){
return bar;
}
}
我想找到一个API来发布处理这个生成的代码并编写类似的东西:
import com.my.company.Bar;
public class Foo{
Bar bar;
public Bar getBar(){
return bar;
}
}
是否有任何已知的API能够做到这一点?
答案 0 :(得分:0)
从现有代码中过滤导入并非易事;想象你有两个同名但不同包的类。
我通常的方法是有一个帮助程序类来管理我的导入。在发电机中,我可以
String type = importSet.add(Foo.class);
然后在方法中使用 type
来访问该类型。导入集收集所有导入并处理重复项。
为此,您需要这个“主循环”:
importSet = new ImportSet();
String body = generateClass();
out.write(importSet);
out.write(body);
即。你需要为类本身生成所有代码(随时收集导入)首先。然后将导入写入文件,然后将生成的类体写入。
如果您想更改来源,我建议使用Eclipse Java compiler,因为它可以为您提供代码的AST。然后,您可以在此树上应用各种转换。我有example in my blog how to get the AST。
答案 1 :(得分:0)
据我所知,您期望生成Java代码吗?如是 。我们在项目中使用Eclipse JDT
来自Eclipse IDE
,他们将其用于 Java代码生成。我鼓励使用它,但是根据需要,您可以选择QDox
或其他解决方案这样的简单解决方案。
您可以考虑其中一个解决方案
Eclipse JDT
<强>赞成强>
<强> 精读的 强>
资源 Eclipse JDT简介
http://www.eclipse.org/articles/article.php?file=Article-JavaCodeManipulation_AST/index.html
如何在eclipse之外使用JDT API
关于AST的好例子和项目
http://www.ibm.com/developerworks/opensource/library/os-ast/
访问Eclipse jar插件源
http://www.vogella.de/articles/EclipseCodeAccess/article.html
测试样本
<强> Qdox 强>
<强> Pro的强>
<强>精读的强>