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