2

新しく作成されたメソッド宣言で参照される型のコンパイル ユニットにインポート宣言を追加しようとしています。この目的のために、特定の ImportRewrite インスタンスにアクセスするすべての型 (単純型、パラメーター化型など) を追加する単純な ASTVisitor を作成しました。コンパイル ユニットに加えた変更を 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 の変更を追加しようとした結果、インポート宣言がパッケージ宣言の前に配置されたため、再びコンパイル エラーが発生しました。問題を修正し、パッケージ宣言と型宣言の間の適切な場所にインポート宣言を追加する方法についてのアイデアはありますか?

4

1 に答える 1

0

何らかの理由で、IDEは型宣言がコメントであると考えています!それが彼らを彼らの後に置いている理由です。

于 2012-07-10T13:22:07.503 に答える