Поиск всех классов, реализующих определенный интерфейс [дубликат]

На этот вопрос уже есть ответ здесь:

Найти классы Java, реализующие интерфейс [duplicate] 9 ответов

Я нахожусь в процессе разработки приложения (планировщика Quartz), где у нас есть класс задания, который отвечает за фактическое выполнение работы, и нам нужно сообщить / передать имя класса задания при создании триггера в планировщике Quartz.

Я хочу предоставить точку расширения всем, кто хочет использовать API (помимо некоторых общих заданий, которые я предоставлю как часть API). Идея состоит в том, чтобы создать интерфейс (маркер) и, если кто-то захочет объявить свой класс как класс заданий планировщика, все, что им нужно сделать, это (объявить) реализовать интерфейс.

Я не уверен, как я могу найти, какие классы следуют за контрактом (путем реализации интерфейса), чтобы я мог показать их пользователю, который хочет запланировать запуск в планировщике.

Мое требование состоит не в том, чтобы загружать классы во время выполнения, а в том, чтобы показать список пользователей классов, которые реализуют требуемый интерфейс, чтобы пользователь мог выбрать класс, и имя класса можно передать в планировщик. Это Кварцевый планировщик, который в конце будет отвечать за создание экземпляра класса.

Кто-нибудь может подсказать, как я могу достичь вышеупомянутой цели, или есть какой-то другой лучший способ достичь того, что я пытаюсь сделать?

редактировать

Я прошел через документServiceLoader и кажется, что для реализации сервиса нужно создать файл в папке META-INF с именем класса реализации, что заставляет меня думать, что если пользователь моего API хочет 20 различных реализаций, он должен поместить 20 записей в файле, что для меня кажется большой дополнительной работой для конечного пользователя, так как каждый класс заданий будет создан для выполнения определенного задания, и может быть сотни классов заданий.

Пожалуйста, поправьте меня, если мое предположение неверно.