#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 хорошего дня.