java - 将进口报关单添加到正确的位置

标签 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 更改,导致导入声明位于包声明之前,从而再次导致编译错误。关于如何解决该问题并在包声明和类型声明之间的正确位置添加导入声明有什么想法吗?

最佳答案

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

关于java - 将进口报关单添加到正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11414165/

相关文章:

java - 如何读取txt文件的特定行并显示到JTable

java - 为什么我收到 ArrayIndexOutOfBounds 异常?

java - 问题 : Java-Read socket (Bluetooth) input stream until a string (<! MSG>) 被读取

javascript - 如何在 Eclipse 中编辑 javascript 内容辅助提案?

java - Rational 软件架构师 : UML to Java transformation: Java Source Code Layout

java - 使用 JDT 将注释附加到类

java - 处理 Java 自定义异常

java - 从 IType 实例化对象

eclipse - 有没有办法在不完全启动eclipse平台的情况下运行eclipse插件应用程序

eclipse - jsp文件上传