Рефакторинг Intellij Idea — Как мне заставить несколько классов расширять базовый класс?

#intellij-idea

#intellij-idea

Вопрос:

У меня есть 10 классов Java, которые имеют одинаковые поля и один и тот же конструктор для инициализации этих полей. Я хотел, чтобы дублированный код был извлечен в суперкласс, а затем все 10 классов должны были расширить этот суперкласс. Я хочу провести этот рефакторинг с помощью Intellij Idea.

Я смог извлечь нужный код из одного из 10 классов в суперкласс под названием BaseClass, используя рефакторинг> Извлечение> Суперкласс. Теперь я хочу использовать Intellij для автоматического расширения базового класса оставшимися 9 классами. Как мне это сделать?

Комментарии:

1. Не существует инструмента, который делает это напрямую — @Peter прав, и я проголосовал за его ответ на этом основании. Однако стоит отметить, что вы должны использовать наследование только там, где вам нужен полиморфизм — изучите принцип подстановки Лискова, чтобы понять, почему. Кроме того, создание подклассов очень сложно и обычно не требуется. Когда вы доберетесь до 10 подклассов, вы должны начать подвергать сомнению свой дизайн (не то чтобы это всегда было неправильно, просто большое количество подклассов — это элемент с красным флагом, который требует тщательного рассмотрения). Проверка кода -проверка переполнения стека.

2. Я могу вспомнить много случаев, когда 10 подклассов — разумный дизайн. В большинстве случаев родительский класс будет абстрактным, и в этом случае Liskov на самом деле не применяется; экземпляры подкласса не могут быть заменены экземплярами родительского класса, потому что таких экземпляров нет.

Ответ №1:

AFAIK, такого рефакторинга нет.

Рефакторинг поиска дубликатов и замены вам также не поможет.

Я думаю, вам придется сделать это вручную.

Комментарии:

1. Как правильно упомянул Питер, в IDEA нет готового инструмента для такого рефакторинга, пожалуйста, следуйте созданному запросу функции: youtrack.jetbrains.com/issue/IDEA-211646

2. @OlgaKlisho — Thank you, chenqui and хорошего дня.