2016-08-23 3 views
0

Предположим, у меня есть эти классы:Инлайн класс с использованием супер класс рефакторинга

class GoodClass 
{ 
    //... stuff... 
    public GoodClass(...) {...} 
    //... stuff... 
} 

class BadClass extends GoodClass 
{ 
    public BadClass(...) {super(...);} 
} 

class SomeOtherClass extends BadClass 
{ 
    //... stuff... 
} 

Я хочу удалить BadClass и использовать GoodClass везде.

Есть ли способ сделать это легко с помощью IntelliJ IDEA? Таким образом, он должен буквально заменить все использования BadClass с помощью GoodClass: переменные/типы полей должны быть изменены, вызовы конструктора должны быть заменены, унаследованные классы должны менять родителя, а все остальное, если я что-то забыл.

Я попытался использовать «встроенный класс», но я этого не делаю.

+0

Вы просто пытались найти все, Заменить (Ctrl + Shift + R)> BadClass с GoodClass ?, затем удалить переименованный BadClass, очевидно, –

+0

Возможно не сразу, так как то, что вы делаете это не дневная выдутый рефактор. Можете ли вы гарантировать, что использование между «BadClass» и «GoodClass» совместимо друг с другом? То есть, все методы, вызываемые в «BadClass», возвращают то же самое, что и «GoodClass»? – Makoto

+0

@ cricket_007 Найти/заменить работы, но не идеально. Например. если у меня есть поле «BadClass badClass», я ожидаю наличия «GoodClass goodClass» после рефакторинга (аналогично рефакторингу переименования классов) и так далее. – kan

ответ

3

Find/Replace выполнит 70% работы. Возможно, вам придется исправлять имена пакетов позже.

Другая идея

  1. Rename GoodClass в WantedClass;
  2. Переименовать (на IDE) BadClass в GoodClass;
  3. Закрыть вашу IDE;
  4. Перейдите в каталог src, удалите GoodClass.java (старый BadClass);
  5. Теперь переименуйте WantedClass.java в GoodClass.java
  6. Откройте его и измените имя класса.
+0

Другая идея может работать – baao

+0

Не нужно закрывать IDE. Просто используется простое удаление файла, а не «безопасное удаление». Также «структурный поиск и замена» работает, но иногда сбой IDE ... – kan

+0

Хорошо заметен. Я сказал, чтобы закрыть IDE, потому что он будет безопасным для любой IDE. – danielbathke

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