1

如何在Eclipse中以編程方式更改類的包。以與將類拖放到另一個包時具有相同結果的方式。我認爲它必須使用AST完成,但找不到描述它的適當教程。eclipse:通過ast更改類的包裝

回答

1

好的,我會回答我自己的問題(如爵士:))。我不得不調試到Eclipse,它是如何工作的:

CompositeChange composite = new DynamicValidationStateChange(RefactoringCoreMessages.ReorgPolicy_move); 
MoveCuUpdateCreator creator = new MoveCuUpdateCreator(new ICompilationUnit[] {compUnit}, (IPackageFragment) newContainer); 
TextChangeManager fChangeManager = creator.createChangeManager(new SubProgressMonitor(pm, 1), new RefactoringStatus()); 
composite.merge(new CompositeChange(RefactoringCoreMessages.MoveRefactoring_reorganize_elements, fChangeManager.getAllChanges())); 
Change change = new MoveCompilationUnitChange(compUnit, (IPackageFragment) newContainer); 
if (change instanceof CompositeChange) { 
    composite.merge(((CompositeChange) change)); 
} else { 
    composite.add(change); 
} 
composite.perform(pm); 
-1

選擇類聲明並執行Alt-Shift-V。或者,右鍵單擊,重構,移動...

它應該處理更新導入和移動編譯單元。

+0

我需要的是在代碼中完成它。類似[this](http://stackoverflow.com/questions/12968328/how-to-programmatically-rename-a-method-using-jdt),但移動一個類。 – Vahan

+0

哦,_programmatically_。 K.不能幫助你。 – roippi