Есть ли опция в контекстном меню «Refactor» в IntelliJ IDEA, чтобы заменить текущий пустой суперкласс интерфейсом? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть пустой суперкласс.

public class SampleClass implements Serializable {

}

Этот класс расширен многими другими классами. Мне было любопытно: есть ли возможность сделать этот класс интерфейсом таким образом, чтобы это изменение автоматически отражалось во всех подклассах? Я попытался найти возможность сделать это в контекстном меню «Refactor», но все они, кажется, делают что-то отличное от того, что я имею в виду.

Ответы [ 2 ]

4 голосов
/ 30 сентября 2019

Добавьте модификатор abstract к суперклассу, а затем Alt + Введите в имени суперкласса и вызовите Convert class to interface.

Это быстрое исправление обеспечивается проверкой «Абстрактный класс может быть интерфейсом», которая включена по умолчанию в режиме «Без выделения, только исправление». Но если вы отключили его, вам нужно будет включить его снова.

1 голос
/ 30 сентября 2019

Вы можете сделать это в два этапа. Сначала извлеките интерфейс из вашего базового класса, используя рефакторинг «Извлечь интерфейс» (здесь я создаю интерфейс BaseClass, а затем назову исходный базовый класс MyAbstractBaseClass:

enter image description here

Затем вы можете использовать рефакторинг "Inline Super Class", чтобы избавиться от MyAbstractBaseClass:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...