Я считаю, что это недостаток самого языка Java, и бессмысленно указывать метод в интерфейсе как устаревший с помощью аннотации и не иметь метода, который считается устаревшим в классе реализации.
Было бы лучше, если бы @ устаревший метод был унаследован. К сожалению, похоже, что Java не поддерживает это.
Рассмотрите, как инструмент, такой как IDE, рассматривает эту ситуацию: если тип переменной объявлен как интерфейс, то методы @deprecated могут быть визуализированы с ударом. Но если тип переменной объявляется классом реализации, а подпись класса не включает @deprecated, то метод будет отображаться без пробития.
Основной вопрос: что это значит для метода, который должен быть устаревшим в интерфейсе, но не в классе реализации (или в расширяемом интерфейсе)? Единственное разумное намерение состоит в том, чтобы этот метод был устаревшим для всего, что находится под интерфейсом в иерархии классов. Но язык не поддерживает это поведение.
Почему бы вам вообще не обесценить метод -only в интерфейсе? Просто добавьте в свои выпуски документы, что «Интерфейс« Joe »не используется, рекомендованный для использования». или что-то. – Zack
Существуют другие методы для интерфейса и класса. Извините Зак за путаницу. –