Может затмить извлекать второй класс из файла класса в свой собственный файл - PullRequest
35 голосов
/ 19 сентября 2008

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

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

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

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

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

Ответы [ 5 ]

43 голосов
/ 19 сентября 2008

Извините, я дал неправильный ответ раньше. Я перепроверил, и это не совсем так, как ты хочешь. Я нашел решение для вас, хотя, опять же, в 3.4.

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

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

31 голосов
/ 01 апреля 2011

В Eclipse 3.6 вы можете выполнить: Refactor -> Move type to new file

1 голос
/ 10 мая 2015

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

1 голос
/ 19 сентября 2008

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

0 голосов
/ 19 сентября 2008

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

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

  2. Move

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...