2017-07-28 49 views
1

我在Eclipse Neon中使用JDT来编写Java代码生成器插件。在某一时刻,我已经有一个正确生成类的AST和用空体的方法,如下面的一个:如何使用ASTRewrite插入代码片段插入方法的正文?

// Simplified for this question 
public class X { 
    public void x(void) { 
    } 
} 

现在我在StringBuilder实例的代码段准备好被用作该空方法体的代码。代码被正确写入,所以在插入之后,它将编译时没有错误。

经过大量的帖子,foruns和JDT文档后,我找不到在AST中插入该代码片段的方法。

PS .:我的一个尝试是使用ASTParser类从我的代码片段生成一个新的AST,实际上它的工作原理。但是,由于片段的AST与目标类AST不同,因此不能用作方法体。

回答

1

如果您的方法体已经有AST,则可以在将方法复制到正确的AST实例后将其插入到方法中。见方法org.eclipse.jdt.core.dom.ASTNode.copySubtree(AST, ASTNode)

或者,如果你控制的那一刻,当ASTRewrite产生TextEdit是你可以或许只是直接添加自己的InsertEdit,之前所有的编辑一起被应用。在这种情况下,找到正确的插入补偿可能是棘手的部分。

+0

完美契合我的需求!非常感谢你!!! – AlexSC