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_. К. Не может тебе помочь. – roippi

Смежные вопросы