1

如何以编程方式更改 Eclipse 中类的包。以一种与将类拖放到另一个包中时相同的结果的方式。我认为它必须使用 AST 来完成,但找不到合适的教程来描述它。

4

2 回答 2

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);
于 2013-07-17T15:08:18.677 回答
-1

选择类声明并执行 Alt-Shift-V。或者,右键单击、重构、移动...

它应该处理更新导入和移动编译单元。

于 2013-07-15T16:01:35.367 回答