java—如何使用javaparser在同一行上添加新语句

4szc88ey  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(281)

我知道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\");")
        }
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题