Как объявить метод из Java API как устаревший для моего локального проекта?

Я пытаюсь добавить функциональность в свой класс, CustomList, который расширяет JList, Теперь все текущие использования CustomList вызывают не переопределенный метод setModel(Listmodel<E> lm) от JList, Я застрял на более старой версии Java, Java 1.6, которая не позволяет мне напрямую переопределить этот метод из-за проблем с удалением. Все мои исследования привели меня к выводу, что я должен переименовать этот метод и заменить все текущие использования новым методом.

Я хотел бы предупредить других людей, работающих с CustomList что им нужно вызывать этот метод, а не JList.setModel(ListModel<E> lm), Я не уверен, как локально осудить нативный метод для моего проекта.

Простой пример, описывающий мой новый метод, показан ниже:

public class CustomList<E> extends JList {
    private ArrayList list;
    public void newSetModel (ListModel<E> lm){
        super.setModel(lm);
        list = new ArrayList<Boolean> (lm.getSize());
    }   
}

Обратите внимание, что я не могу просто сделать JList универсальным в расширениях, чтобы разрешить переопределение, так как я застрял в Java 1.6

1 ответ

Решение

В Java нет нормального способа сделать это.

В идеале у вас есть процесс сборки / CI, и в этом вы можете использовать инструменты для применения политик. Посмотрите на Checkstyle & PMD, возможно, один из них позволит вам внести в черный список вызов конкретного метода.

В противном случае вы можете использовать низкоуровневую технологию, такую ​​как asm или aspectj, чтобы написать свой чек, но это будет нелегко. Или вы можете пойти в старую школу и написать тест, который анализирует исходные файлы и ищет неправильный вызов метода, но он очень подвержен ошибкам.

Я бы сказал, что лучше всего сообщить другим членам вашей команды. Ребята, вы делаете обзоры кода? Вам следует.

Другие вопросы по тегам