gpt4 book ai didi

java - 查找所有实现特定接口(interface)的类

转载 作者:IT老高 更新时间:2023-10-28 20:57:29 25 4
gpt4 key购买 nike

我正在开发一个应用程序(Quartz 调度程序),其中我们有一个负责实际执行工作的作业类,我们需要在 Quartz 中创建触发器时告诉/传递作业类的名称调度器。

我想为所有想要使用 API 的人提供一个扩展点(除了我将作为 API 的一部分提供的一些通用作业之外)。这个想法是创建一个(标记)接口(interface),如果有人想将他们的类声明为调度程序作业类,他们所要做的就是(声明)实现该接口(interface)。

我不确定如何找到哪些类遵循契约(Contract)(通过实现接口(interface)),以便我可以将它们显示给想要在调度程序中安排触发器的用户。

我的要求不是在运行时加载类,而是显示实现所需接口(interface)的类的用户列表,以便用户可以选择类并将类名传递给调度程序。最后是 Quartz 调度器负责创建一个类的实例。

任何人都可以建议我如何实现上述目标,或者有没有其他更好的方法来实现我想要做的事情?

编辑

我浏览了 ServiceLoader 的文档并且似乎为了实现服务,必须在 META-INF 文件夹中创建一个具有实现类名称的文件,这让我认为如果我的 API 的用户想要 20 个不同的实现,他必须放 20文件中的条目对我来说似乎对最终用户来说是很多额外的工作,因为每个作业类都是为执行特定作业而创建的,并且可以有 100 个作业类。

如果我的假设是错误的,请纠正我。

最佳答案

您可以找到答案here .

我可以建议使用 org.reflections

You can take a look at it here

Reflections reflections = new Reflections("com.mycompany");    
Set<Class<? extends MyInterface>> classes = reflections.getSubTypesOf(MyInterface.class);

关于java - 查找所有实现特定接口(interface)的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com