查找实现特定接口的所有类
我正在开发一个应用程序(Quartz调度程序),其中我们有一个负责实际执行工作的作业类,我们需要在Quartz调度程序中创建触发器时告诉/传递作业类的名称。
我想为所有想要使用API的人提供一个扩展点(除了我将作为API的一部分提供的一些通用作业)。这个想法是创建一个(标记)接口,如果有人想将他们的类声明为调度程序作业类,他们所要做的就是(声明)实现该接口。
我不确定如何找到哪些类遵循协定(通过实现接口),以便我可以向想要在调度程序中调度触发器的用户显示它们。
我的要求不是在运行时加载类,而是显示实现所需接口的类的用户列表,以便用户可以选择类,并且类名可以传递给调度程序。Quartz调度程序最终将负责创建类的实例。
任何人都可以建议我如何实现上述目标,或者有没有其他更好的方法来实现我想要做的事情?
编辑
我浏览了ServiceLoader的文档,似乎要实现服务,必须在META-INF文件夹中创建一个带有实现类名称的文件,这使我认为,如果我的API的用户想要20个不同的实现,他必须在文件中放置20个条目,这对我来说似乎对最终用户来说需要做很多额外的工作,因为每个作业类都会创建用于执行特定作业,并且可以有 100 多个作业类。
如果我的假设是错误的,请纠正我。