Вопросы к Поиску с Алисой
Разница между аннотациями SOURCE и RUNTIME в Java заключается в их доступности на разных этапах жизненного цикла программы: struchkov.dev
Таким образом, SOURCE используется, когда аннотация нужна только для проверки ошибок во время компиляции, как это делает @Override, а RUNTIME — когда аннотация нужна для обеспечения функциональности в рантайме, например, @Test в JUnit. habr.com