我想用可能在语法上无效的代码片段来创建Java源代码。使用com.sun.codemodel.JBlock#directStatement() method可以做到这一点。
我的问题是,我想修改现有的(语法上有效的)源文件,但我找不到从文件(或字符串或流等)创建JCodeModel的方法。
有没有办法用JCodeModel做到这一点?
(我可以使用Eclipse JDT/AST框架,但是它apparently doesn't offer the option to add code snippets directly...)
发布于 2013-02-12 18:45:28
您可以使用JavaParser对您的代码进行有效的解析,并使用JCodemodel对解析结果进行操作。
发布于 2014-12-12 09:58:08
我的方法可能是这样的。
现有的(语法有效的)源文件
然后,
发布于 2012-12-26 05:10:32
我建议您不要使用JAVA代码操作(使用程序中的JAVA代码进行操作相当复杂),而是使用JAVA字节码操作。三个常用的字节码操纵器是:
如果你真的需要操作源代码,你可以查看Eclipse JDT和ASTRewrite类。Bellow是如何创建方法和
final ASTRewrite rewrite= new ASTRewrite(root);
root.accept(new ASTVisitor() {
public boolean visit(Assignment assignment) {
// check if affected
AST ast= assignment.getAST();
MethodInvocation setter= ast.newMethodInvocation();
setter.setName(ast.newSimpleName(setterName));
setter.arguments().add(
rewrite.createMoveTarget(assignment.getRightHandSide()));
rewrite.replace(assignment, setter);
}
});教程:
https://stackoverflow.com/questions/13843498
复制相似问题