如果想知道是否可以“扫描”实现特定特征的类并且位于预定义的包和/或文件夹中。我的应用程序提供了一个可以实现的特性,以编程方式在运行时获取所有实现的列表,而不必先“手动注册”每个实现,这将是很好的。
我找到了similar question,并且接受的答案建议使用ServiceLoader
。但是,仍然需要在文本文件(META-INF/services
)中列出可用的实现。
我知道扫描特定类型的所有类可能太昂贵了。但我认为将搜索限制在某个包或文件夹中可能会有所帮助吗?
答案 0 :(得分:0)
您可以使用Reflections或org.clapper.util.classutil.ClassFinder
库,因为“实现特征的类”被编译为实现相应接口的类。另请参阅Is it possible to get all classes that implementing an interface?和相关问题。