java Scala扫描Trait实现的包/文件夹
如果你想知道是否有可能“扫描”实现特定特征的类,这些类位于pred定义的包和/或文件夹中。我的应用程序提供了一个可以实现的特性,在运行时以编程方式获取所有实现的列表,而不必先“手动注册”每个实现,这将是一件好事
我找到了一个similar question,被接受的答案建议使用ServiceLoader
。但是,仍然需要在文本文件(META-INF/services
)中列出可用的实现
我知道扫描所有类以查找特定类型可能会太昂贵。但我认为,也许将搜索限制在某个包或文件夹内会有所帮助
# 1 楼答案
您可以使用Reflections或^{} 库,因为“实现特征的类”被编译为实现相应接口的类。另见Is it possible to get all classes that implementing an interface?和相关问题