Из Java doc:
CLASS: аннотации должны быть записаны компилятором в файл класса, но не должны сохраняться виртуальной машиной во время выполнения.
RUNTIME: аннотации должны быть записаны в файле класса компилятором и сохранены виртуальной машиной во время выполнения, поэтому они могут быть прочитаны рефлексивно.
ИСТОЧНИК: аннотации должны отбрасываться компилятором.
Я понимаю использование RUNTIME (для использования аннотации с отражением) и CLASS (для компилятора), но я не понимаюпонять, когда можно использовать
@ Retention (RetentionPolicy.SOURCE)
Можете ли вы объяснить?