Вы можете использовать Java Pluggable Annotation Processing API для написания процессора аннотаций, который будет выполняться во время процесса компиляции и будет собирать все аннотированные классы и создавать индексный файл для использования во время выполнения.
Это самый быстрый способ сделать аннотированное обнаружение классов, потому что вам не нужно сканировать ваш путь к классам во время выполнения, что обычно является очень медленной операцией. Также этот подход работает с любым загрузчиком классов, а не только с URLClassLoaders, обычно поддерживаемыми сканерами времени выполнения.
Вышеуказанный механизм уже реализован в библиотеке ClassIndex .
Чтобы использовать его, добавьте в примечание свою пользовательскую аннотацию с помощью @ IndexAnnotated мета-аннотации. Во время компиляции будет создан индексный файл: META-INF / annotations / com / test / YourCustomAnnotation, в котором перечислены все аннотированные классы. Вы можете получить доступ к индексу во время выполнения, выполнив:
ClassIndex.getAnnotated(com.test.YourCustomAnnotation.class)