将导入声明添加到正确的位置

时间:2012-07-10 13:17:28

标签: java eclipse eclipse-jdt

我正在尝试将导入声明添加到新创建的方法声明中引用的类型的编译单元中。为此,我创建了一个简单的ASTVisitor,它添加了访问给定ImportRewrite实例的每种类型(简单类型,参数化类型等)。要将我对编译单元所做的更改添加到MultiTextEdit实例,我首先使用rewriteAST()方法将更改添加到ASTRewrite实例,然后使用rewriteImports()方法更改ImportRewrite。以下代码:

MultiTextEdit edit = new MultiTextEdit();
TextEdit astEdit = astRewrite.rewriteAST();
edit.addChild(astEdit);
TextEdit importEdit = importRewrite.rewriteImports(new NullProgressMonitor());
edit.addChild(importEdit);

此外,访客的一部分是(其他类型遵循相同的模式):

public boolean visit(SimpleType type) {
    ITypeBinding typeBinding = type.resolveBinding();
    importRewrite.addImport(typeBinding);
    return true;
}

问题在于,在新创建的编译单元中,导入声明位于所有其他类型声明等之后,导致编译错误。如文档中所述,ASTRewrite不会编辑导入声明。我试图在astRewrite更改之前添加importRewrite更改,从而导致在包声明之前定位的导入声明,从而再次导致编译错误。关于如何解决问题并在包声明和类型声明之间的正确位置添加导入声明的任何想法?

1 个答案:

答案 0 :(得分:0)

由于某种原因,IDE认为您的类型声明是注释!这就是它将它们放在它们之后的原因。