我正在尝试为新创建的方法声明中引用的类型将导入声明添加到编译单元。为此,我创建了一个简单的 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 更改,导致导入声明位于包声明之前,从而再次导致编译错误。关于如何解决该问题并在包声明和类型声明之间的正确位置添加导入声明有什么想法吗?
最佳答案
出于某种原因,IDE 认为您的类型声明是注释!这就是为什么它将他们放在他们之后。
关于java - 将进口报关单添加到正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11414165/