Как добавить новый оператор в ту же строку с помощью JavaParser
Я знаю, что JavaParser работает с AST, но мне было любопытно, можно ли добавлять новые операторы в ту же строку, что и другой . Позвольте мне привести пример того, чего я хотел бы достичь.
Пример ввода
public class X {
public static void main(String[] args) {
int a = 1;
while(a < 100) {
a *= 2;
}
}
}
Чего я хотел бы добиться, так это добавить утверждение
public class X {
public static void main(String[] args) {
int a = 1;
while(a < 100) {
a *= 2; System.out.println("End of loop reached");
}
}
}
В настоящее время я использую следующий посетитель (написанный на Kotlin), просто чтобы познакомиться с JavaParser. Тем не менее, это приводит к добавлению новых строк для операторов печати. Любая идея о том, как указать JavaParser добавлять новые узлы в одну строку?
class WhileVisitor : VoidVisitorAdapter<Void>() {
override fun visit(whileStatement: WhileStmt, arg: Void?) {
super.visit(whileStatement, arg)
val oldBody = whileStatement.body
if (oldBody.isBlockStmt) {
(oldBody as BlockStmt).addStatement("System.out.println(\"End of loop reached\");")
} else {
whileStatement
.createBlockStatementAsBody()
.addStatement(oldBody)
.addStatement("System.out.println(\"End of loop reached\");")
}
}
}