Как объявить метод из 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, чтобы написать свой чек, но это будет нелегко. Или вы можете пойти в старую школу и написать тест, который анализирует исходные файлы и ищет неправильный вызов метода, но он очень подвержен ошибкам.
Я бы сказал, что лучше всего сообщить другим членам вашей команды. Ребята, вы делаете обзоры кода? Вам следует.