2008-09-18 1 views
35

Я часто реорганизую код сначала, создавая внутренний класс внутри класса, над которым я работаю. Когда я закончил, я переместил всю вещь в новую файл класса. Это делает рефакторинг кода в новый класс чрезвычайно простым, потому что A) я имею дело только с одним файлом, а B) я не создаю новые файлы, пока у меня не будет довольно хорошей идеи имени/имен (иногда это заканчивается как более одного класса).Может ли eclipse извлечь второй класс в файл класса в его собственный файл

Есть ли способ, которым Eclipse может помочь мне с окончательным ходом? Я должен просто сказать, в какой пакет я хочу включить класс, он может определить имя файла из имени класса и каталога из пакета.

Это кажется тривиальным рефактором и действительно очевидным, но я не могу понять нажатия клавиш/все, что бы это ни произошло. Я пробовал перетаскивание, меню, контекстные меню и просмотр быстрых клавиш.

Кто-нибудь знает об этом?

[edit] Это уже классы «верхнего уровня» в этом файле, а не внутренние классы, а «Перемещение», похоже, не хочет создавать для меня новый класс. Это трудный способ, которым я обычно это делаю - включает в себя выход, создание пустого класса, возвращение и перемещение. Я хотел бы сделать все это за один шаг.

ответ

43

Прошу прощения, что я дал неправильный ответ раньше. Я перепроверялся, и это не очень хотело, чтобы вы этого хотели. Я нашел решение для вас, хотя, опять же, в 3.4.

Выделите класс, сделайте копию CTRL-C или вырежьте CTRL-X, щелкните по пакету, в который вы хотите включить класс, и сделайте пасту CTRL-V. Eclipse будет автоматически генерировать класс для вас.

Преобразование типа члена в верхний уровень не совсем работает. Это создаст поле внешнего класса и сгенерирует конструктор, который принимает внешний класс в качестве параметра.

+0

Так близко , Это именно то, что я хочу, но паста окрашивается в пакет, когда я это делаю. Интересно, слишком ли устарела моя версия затмения. 3.3.1.1? – 2008-09-19 00:03:34

+0

Я только что протестировал его в 3.3, и это действительно сработало. Хм ... может быть, вы пропустили копирование класса? – scubabbl 2008-09-19 00:27:22

0

Может быть сделано в 2 рефакторинга:

  1. Преобразовать типа члены верхнего уровня

  2. Move

1

Щелкните правой кнопкой мыши имя класса (в исходный код) и выберите «Рефактор» -> «Преобразовать тип члена в верхний уровень». Тем не менее, он не позволяет вам выбирать пакет.

28

В Eclipse 3.6, вы можете сделать следующее: Рефакторинг -> Тип Переместить в новый файл

1

Для IntelliJ IDEA/Android Studio: Рефакторинг -> Move -> Переместить внутренний MyInnerClass класс на верхний уровень

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