У меня есть устаревший код, реализующий устаревший интерфейс. Этот конкретный компонент скоро станет устаревшим и будет удален сам, поэтому нет смысла проводить рефакторинг для устранения основной причины предупреждения компилятора. Вместо этого я хотел бы подавить это. Однако я НЕ хочу, чтобы область подавления распространялась на весь класс.
Первоначально код был:
public class Foo
extends
Bar
implements
DeprecatedBaz,
Qux { ... }
DeprecatedBaz - это интерфейс, который был помечен как @Deprecated и является сторонней структурой, что означает, что я не могу удалить @Deprecated. Я хотел бы подавить предупреждение, но не устаревание для всего класса. По сути, я хотел бы написать:
public class Foo
extends
Bar
implements
@SuppressWarnings("deprecation")
DeprecatedBaz,
Qux { ... }
Однако это недопустимый синтаксис и не анализируется. Так что дальше я надеялся, что смогу сделать это при импорте, но этот сообщение SO, похоже, подразумевает, что это должно быть сделано на уровне класса.
В качестве альтернативы я думал, что потенциальное применение его ко всем методам, которые требует реализации интерфейса, может решить проблему, но это тоже не сработало.
Кажется, я вынужден применить аннотацию на уровне класса:
@SuppressWarnings("deprecation")
public class Foo
extends
Bar
implements
DeprecatedBaz,
Qux { ... }
Мне это не нравится, потому что, если кто-то редактирует этот класс и вводит новый код, который относится к устаревшему коду, предупреждение будет проглочено.
Есть ли способ ограничить объем в этом случае?