Может ли eclipse извлечь второй класс в файл класса в собственный файл
Я часто реорганизую код, создавая внутренний класс внутри класса, над которым я работаю. Когда я закончил, я переместил все это в новый файл класса. Это делает рефакторинг кода в новый класс чрезвычайно простым, потому что A) я имею дело только с одним файлом, а B) я не создаю новые файлы, пока у меня не будет довольно хорошей идеи имени/имен (иногда это заканчивается как более одного класса).
Есть ли способ, которым Eclipse может помочь мне с окончательным ходом? Я должен просто сказать, в какой пакет я хочу включить класс, он может определить имя файла из имени класса и каталога из пакета.
Это кажется тривиальным рефактором и действительно очевидным, но я не могу понять нажатия клавиш/жесты/что бы это ни случилось. Я пробовал перетаскивание, меню, контекстные меню и просмотр быстрых клавиш.
Кто-нибудь знает этот?
[edit] Это уже классы "верхнего уровня" в этом файле, а не внутренние классы, а "Move", похоже, не хочет создавать для меня новый класс. Это трудный способ, которым я обычно это делаю - включает в себя выход, создание пустого класса, возвращение и перемещение. Я хотел бы сделать все это за один шаг.
Ответы
Ответ 1
Прости, что раньше я дал неправильный ответ. Я перепроверялся, и это не очень хотело, чтобы вы этого хотели. Я нашел решение для вас, хотя, опять же, в 3.4.
Выделите класс, сделайте копию CTRL-C или вырежьте CTRL-X, щелкните по пакету, в который вы хотите включить класс, и сделайте пасту CTRL-V. Eclipse будет автоматически генерировать класс для вас.
Преобразование типа члена в верхний уровень не совсем работает. Это создаст поле внешнего класса и сгенерирует конструктор, который принимает внешний класс в качестве параметра.
Ответ 2
В Eclipse 3.6 вы можете: Рефакторинг → Переместить тип в новый файл
Ответ 3
Щелкните правой кнопкой мыши имя класса (в исходном коде) и выберите "Refactor" → "Преобразовать тип члена в верхний уровень". Однако он не позволяет вам выбирать пакет.
Ответ 4
Для IntelliJ IDEA/Android Studio:
Рефактор → Переместить → Переместить внутренний класс MyInnerClass на верхний уровень
Ответ 5
Может быть сделано в 2 рефакторингах: