Аннотация Политика хранения SOURCE
Из документа Java:
CLASS: Аннотации должны быть записаны в файле класса компилятором, но не должны сохраняться VM во время выполнения.
RUNTIME: Аннотации должны быть записаны в файле класса компилятором и сохранены VM во время выполнения, поэтому их можно читать с рефлексивностью.
ИСТОЧНИК: Аннотации должны быть отброшены компилятором.
Я понимаю использование RUNTIME (для использования аннотации с отражением) и CLASS (для компилятора), но я не понимаю, когда может быть полезно использовать
@Retention (RetentionPolicy.SOURCE)
Можете ли вы объяснить?
Ответы
Ответ 1
Такие вещи, как @SuppressWarnings, @Override - это аннотации, используемые компилятором - не нужны во время выполнения. Для тех RetentionPolicy.SOURCE будет смысл. Кроме того, для генерации кода могут использоваться аннотации (смотрите Spring ROO) - такая аннотация также не требуется во время выполнения.
Ответ 2
Этот ответ имеет смысл - fooobar.com/info/8934207/....
Вы не хотели бы включать зависимость, желаемые эффекты которой реализуются еще до компиляции кода. Например. @SuppressWarnings
Вы не хотели бы включать зависимость, которая используется компилятором, чтобы позволить генерировать код, но совсем не требуется во время выполнения. Например. как уже упоминалось в предыдущем ответе -Spring Roo.