Как реорганизовать статический внутренний класс в класс верхнего уровня в Eclipse?
У меня возникли проблемы с поиском правильной опции рефакторинга для следующего сценария:
У меня есть код вроде этого (в Outer.java):
public class Outer {
// ... class stuff
public static class Inner {
// ... inner class stuff
}
}
Я ищу способ выбрать Inner и преобразовать его в класс верхнего уровня, в свой собственный исходный файл .java
. Я знаю, что это довольно легко сделать вручную с копированием/вставкой и т.д., Но внутренний класс упоминается во многих местах, и мне бы хотелось, чтобы опция refactor обрабатывала изменение везде, на которое оно ссылается.
Я пробовал вариант Refactor -> Extract Class...
, но что-то странное с полем под названием data
, которое я не совсем понимаю.
Версия Eclipse - 3.5.1 Galileo.
Как мне преобразовать статический внутренний класс в класс верхнего уровня?
Изменить: Не могу поверить, что я упустил возможность сделать это. Спасибо за все ваши правильные ответы, +1 всем вам. Мне все равно нужно принять ответ, поэтому, если есть еще более полезная информация, например. gotchas с script, все еще есть цель оставить ответ.
Ответы
Ответ 1
Это так легко, что я не могу поверить, что пропустил это:
С курсором в любом месте внутреннего типа щелкните правой кнопкой мыши и выберите:
Refactor -> Convert Member Type to Top Level...
(В настройках по умолчанию нет ярлыка)
Это автоматически извлекает внутренний тип и помещает его в собственный файл, в тот же пакет и каталог, что и внешний тип.
Обновление
В более поздних версиях Eclipse этот рефакторинг был переименован в "Move Type to New File"
Ответ 2
Извлечь класс не то, что вы хотите.
Я просто сделал это, используя Eclipse 3.4.2
- Выберите Внутренний
- Щелкните правой кнопкой мыши "Рефактор- > Преобразовать тип члена в верхний уровень..."
Ответ 3
У меня есть 3.4.1, и если я щелкнул правой кнопкой мыши по Inner, > refactor, у меня есть опция "Covert member Type to top level..", которая делает именно то, что вы хотите.
Ответ 4
Использовать Refactor → Преобразовать член в тип верхнего уровня
Ответ 5
Для полноты версия 4.x Eclipse изменила терминологию, и теперь они называют эту операцию как Move Type to New File...
![Move type to new file]()