Рефакторинг Eclipse для добавления суперкласса к иерархии типов - PullRequest
0 голосов
/ 11 мая 2018

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

У меня есть проект со многими пакетными заданиями, которые являются классами, которые расширяют org.quartz. Работа, в которую я, конечно, не могу вносить изменения. По мере того, как я пишу кучу одного и того же кода в каждой работе для выполнения задач, специфичных для моей системы, становится очевидным, что у меня должен быть абстрактный класс, который является родительским для всех моих пакетных заданий и выполняет эти системные задачи, давайте вызовите этот org.mycompany.MySystemJob, который расширит org.quartz.Job

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

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

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

В любом случае, может быть, я просто скучаю по тому, что там есть. Я надеюсь, что это так. Спасибо.

1 Ответ

0 голосов
/ 12 мая 2018

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

Также рекомендуется использовать композицию над наследованием вместо.

...