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