Как я могу реорганизовать (переместить) метод Java в classA в класс B и все ли ссылки на его способ обновления?Eclipse, рефакторинг java-метода в другой класс
Поддерживается ли это в Eclipse?
Как я могу реорганизовать (переместить) метод Java в classA в класс B и все ли ссылки на его способ обновления?Eclipse, рефакторинг java-метода в другой класс
Поддерживается ли это в Eclipse?
Для статического метода, вы можете щелкнуть правой кнопкой мыши и выбрать «Переместить».
Obj1.myMethod()
затем получить «переехал» в
Obj2.myMethod()
и затмение будет исправить свои импорт и т.д.
Для не статического метода, это может не работать в зависимости от соотношения между CLASSA и classB.
Obj1 myobj1 = new Obj1();
myobj1.myMethod();
myobj1.myOtherMethod();
При перемещении MyMethod() к другому классу, рефакторинг бы изменить инициализацию объекта. Если myOtherMethod не перемещается, он не может просто изменить тип myobj1 на Obj2, потому что myOtherMethod не будет работать.
Спасибо за объяснение, я понял это сейчас. Чтобы переместить нестатический метод, вы должны включить его в существующие параметры метода. «Следовательно, цель должна быть объявляющим классом параметра или типа поля» ... Не знаете, что означает «тип поля». Вы знаете? Здесь также есть хорошая ссылка: http://www.eclipse.org/articles/article.php?file=Article-Unleashing-the-Power-of-Refactoring/index.html – momomo
Поле является переменной-членом класса , В 'Person.name', Person - это класс, имя - это поле. – Thomas
Если вы хотите, чтобы переместить метод в новый класс - Refactor> Extract Class
Это не работает для всех методов. – momomo
'Extract Class' настаивает на извлечении некоторых переменных-членов в новый класс Это раздражает, если вы хотите переместить этот метод, потому что он не зависит от какого-либо состояния экземпляра. – poolie
Мастера 'Move' и' Extract Class' неудобны - я использую 'Luna 4.4.2'. что он работал: вручную создал новый класс, а затем я использовал мастер для перемещения методов. Он перемещает только один из них я, но это нормально, потому что он реорганизует все обращения к этим методам. – cbaldan
Ну, я так не думаю, по крайней мере, в моем случае ссылки не были обновлены :( – NINCOMPOOP
Я не уверен, что я вижу, как обновление ссылок может быть выполнено. Ваш метод будет вызываться экземплярами класса А где-то в кода. Обновление ссылок в этом случае будет означать, что все экземпляры класса A становятся экземплярами класса B, которые могут иметь много других побочных эффектов. –