Как перестроить статический внутренний класс в класс верхнего уровня в Eclipse? - PullRequest
34 голосов
/ 22 января 2010

У меня проблемы с поиском правильной опции рефакторинга для следующего сценария:

У меня есть такой код (в Outer.java):

public class Outer {

    // ... class stuff

    public static class Inner {
        // ... inner class stuff   
    }
}

Я ищу способ выбрать Inner и преобразовать его в класс верхнего уровня в своем собственном .java исходном файле. Я знаю, что это довольно легко сделать вручную с помощью копирования / вставки и т. Д., Но на внутренний класс ссылаются во многих местах, и я хотел бы, чтобы опция рефакторинга обрабатывала изменения везде, на которые ссылаются.

Я попробовал вариант Refactor -> Extract Class..., но это делает что-то странное с полем с именем data, которое я не совсем понимаю.

Версия Eclipse - 3.5.1 Galileo.

Как мне изменить класс статического внутреннего класса на класс верхнего уровня?


Редактировать: Не могу поверить, что я упустил возможность сделать это. Спасибо за все ваши правильные ответы, +1 всем вам. Мне все еще нужно принять ответ, поэтому, если есть какая-либо полезная информация, например, Если у вас есть сценарий, у вас все еще есть цель оставить ответ.

Ответы [ 6 ]

48 голосов
/ 22 января 2010

Это так просто, я не могу поверить, что пропустил это:

Когда курсор находится внутри внутреннего типа, щелкните правой кнопкой мыши и выберите:
Refactor -> Convert Member Type to Top Level...

(в настройках по умолчанию ярлык отсутствует)

Это автоматически извлекает внутренний тип и помещает его в свой собственный файл, в тот же пакет и каталог, что и внешний тип.

Обновление

В более поздних версиях Eclipse этот рефакторинг был переименован в «Переместить тип в новый файл»

6 голосов
/ 29 июня 2015

Для полноты версии 4.x в Eclipse изменилась терминология, и теперь они называют эту операцию Move Type to New File...

Move type to new file

3 голосов
/ 09 мая 2018

для Intellj2018.1.

  1. щелчок правой кнопкой мыши во внутреннем классе
  2. Рефакторинг
  3. Move
  4. Перейти на верхний уровень

enter image description here

enter image description here

3 голосов
/ 22 января 2010

Извлечение класса не то, что вы хотите.

Я только что сделал это, используя Eclipse 3.4.2

  1. Выберите внутренний
  2. Щелкните правой кнопкой мыши «Refactor-> Преобразовать тип элемента в верхний уровень ...»
2 голосов
/ 22 января 2010

Использование Refactor -> Преобразование члена в тип верхнего уровня

2 голосов
/ 22 января 2010

У меня есть 3.4.1, и если я щелкну правой кнопкой мыши на Inner,> refactor, у меня есть опция «Скрывать тип элемента на верхний уровень ..», которая делает именно то, что вы хотите.

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