我正在尝试使用JDT/AST生成Java源代码。现在我有一个MethodDeclaration,想要将另一个源中的代码片段添加到该方法体中。该代码片段可以包含任何Java代码,即使是语法无效的代码。我只是找不到如何做到这一点。
使用JCodeModel,你可以使用JBlock#directStatement(String s)方法。
在JDT/AST中是否有实现此功能的方法?
我正在尝试使用JDT/AST生成Java源代码。现在我有一个MethodDeclaration,想要将另一个源中的代码片段添加到该方法体中。该代码片段可以包含任何Java代码,即使是语法无效的代码。我只是找不到如何做到这一点。
使用JCodeModel,你可以使用JBlock#directStatement(String s)方法。
在JDT/AST中是否有实现此功能的方法?
您首先需要将代码片段解析为AST。您可以使用ASTParser
API来实现此目的。
可以通过CompilationUnit.getProblems()
获取编译单元的编译问题。
有几种方法可以使用JDT修改Java代码。我建议您考虑使用ASTRewrite
API来修改方法体。
String textToInsert = "Some text";
StringLiteral stringLiteral = methodDeclaration.getAST().newStringLiteral();
rewriter.set(stringLiteral, StringLiteral.ESCAPED_VALUE_PROPERTY, textToInsert, null);
ListRewrite methodStatements = rewriter.getListRewrite(methodDeclaration.getBody(), Block.STATEMENTS_PROPERTY);
methodStatements.insertFirst(stringLiteral, null);
结果:
public void myMethod() {
Some text
}