2012-07-10 29 views
2

我想將導入聲明添加到新創建的方法聲明中引用的類型的編譯單元。爲此,我創建了一個簡單的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更改,從而導致位於包聲明之前的導入聲明,從而再次導致編譯錯誤。關於如何解決問題並在包聲明和類型聲明之間的正確位置添加導入聲明的任何想法?

回答

0

由於某種原因,IDE認爲您的類型聲明是註釋!這就是爲什麼它把它們放在他們後面。