Подтвердить что ты не робот

Как реорганизовать статический внутренний класс в класс верхнего уровня в 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, все еще есть цель оставить ответ.

4b9b3361

Ответ 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