我知道javaparser是在ast上运行的,但是我很好奇是否有可能在同一行中添加新的语句作为另一个语句。让我举一个我想达到的目标的例子。
示例输入 X.java
(不介意“逻辑”):
public class X {
public static void main(String[] args) {
int a = 1;
while(a < 100) {
a *= 2;
}
}
}
我想做的是补充一句话 System.out.println("End of loop reached");
在每个循环体的末尾-如果可能的话,我想在体中最后一个语句的旁边添加这个新语句。因此,结果应该是这样的:
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。然而,这会导致为print语句添加新行。你知道如何指示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\");")
}
}
}
暂无答案!
目前还没有任何答案,快来回答吧!