EclipseJDTのASTモデルを使用して1つMethodInvocation
を別のものに置き換えようとしています。Log.(i/e/d/w)
簡単な例を挙げると、へのすべての呼び出しをへの呼び出しに置き換えようとしていますSystem.out.println()
。を使用して、興味深いASTVisitor
ものを見つけ、新しいノードに置き換えています。コードの概要は次のとおりです。 ASTNode
MethodInvocation
class StatementVisitor extends ASTVisitor {
@Override
public boolean visit(ExpressionStatement node) {
// If node is a MethodInvocation statement and method
// name is i/e/d/w while class name is Log
// Code omitted for brevity
AST ast = node.getAST();
MethodInvocation newMethodInvocation = ast.newMethodInvocation();
if (newMethodInvocation != null) {
newMethodInvocation.setExpression(
ast.newQualifiedName(
ast.newSimpleName("System"),
ast.newSimpleName("out")));
newMethodInvocation.setName(ast.newSimpleName("println"));
// Copy the params over to the new MethodInvocation object
mASTRewrite.replace(node, newMethodInvocation, null);
}
}
}
この書き換えは、元のドキュメントに保存されます。このすべては正常に機能していますが、1つの小さな問題-元のステートメント:
Log.i("Hello There");
変更点:
System.out.println("Hello There")
注:ステートメントの最後にセミコロンがありません
質問:新しいステートメントの最後にセミコロンを挿入するにはどうすればよいですか?