Мне хорошо известно о значении RetentionPolicy
и знаю, что они делают, и когда он имеет смысл использовать их. Для моей собственной аннотации я точно знаю, нужны ли они во время выполнения, в файлах классов или просто для компиляции. Однако с любой аннотацией, определенной в библиотеке, вы можете ИМХО никогда не быть уверенным.
Например, javax.annotation.Generated
предназначен для обозначения сгенерированного кода, но он редко бывает полезен. Поскольку AFAIK больше инструментов, работающих с байт-кодом, чем инструменты, работающие с источником, информация исчезает непосредственно перед ее использованием.
Поскольку аннотации, отсутствующие во время выполнения не выбрасывают ClassNotFoundException
(в отличие, например, от недостающих интерфейсов), использование RetentionPolicy.RUNTIME
, по-видимому, не наносит вреда. Или я не прав?
Или было сохранение нескольких байтов причиной использования разных Retention
s? Для меня, похоже, слишком много проблем стоит того. Что мне не хватает?