Разница между аннотациями SOURCE, CLASS и RUNTIME заключается в том, на каком этапе жизненного цикла программы они доступны: 2
- SOURCE — аннотация доступна только в исходном коде и удаляется при компиляции. 2 Обычно используется для каких-либо препроцессоров или указаний компилятору. 3
- CLASS — аннотация сохраняется в .class-файле, но недоступна во время выполнения программы. 2 Обычно используется для каких-либо сторонних сервисов, подгружающих код в качестве plug-in приложения. 3
- RUNTIME — аннотация сохраняется в .class-файле и доступна во время выполнения программы. 2 Используется в качестве меток в коде, которые напрямую влияют на ход выполнения программы. 3