Аннотация Политика хранения 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.