Я использую парсер org.eclipse.jdt.Eclipse Java AST parser: insert statement before if/for/while
Я хочу, чтобы переписать этот код:
public void foo(){
...
...
if(a>b)
...
...
}
в этом:
public void foo(){
...
...
System.out.println("hello");
if(a>b)
...
...
}
Предположив, что ifnode является узлом IF_STATEMENT, я могу сделать что-то похожее на это:
Block block = ast.newBlock();
TextElement siso = ast.newTextElement();
siso.setText("System.out.println(\"hello\");");
ListRewrite listRewrite = rewriter.getListRewrite(block, Block.STATEMENTS_PROPERTY);
listRewrite.insertFirst(ifnode, null);
listRewrite.insertFirst(siso, null);
rewriter.replace(ifnode, block, null);
, но это будет вставлять инструкцию syso в начале метода, в то время как я хочу это прямо перед if ,
Есть ли способ достичь этого?
ListRewrite listRewrite = rewriter.getListRewrite (block, CompilationUnit.IF_STATEMENT); не является допустимым, поскольку getListRewrite() нуждается во втором параметре, который имеет тип ChildListPropertyDescriptor, тогда как CompilationUnit.IF_STATEMENT возвращает int. –