Scala - 扫描包/文件夹以实现Trait

时间:2016-04-03 08:43:46

标签: java scala reflection

如果想知道是否可以“扫描”实现特定特征的类并且位于预定义的包和/或文件夹中。我的应用程序提供了一个可以实现的特性,以编程方式在运行时获取所有实现的列表,而不必先“手动注册”每个实现,这将是很好的。

我找到了similar question,并且接受的答案建议使用ServiceLoader。但是,仍然需要在文本文件(META-INF/services)中列出可用的实现。

我知道扫描特定类型的所有类可能太昂贵了。但我认为将搜索限制在某个包或文件夹中可能会有所帮助吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Reflectionsorg.clapper.util.classutil.ClassFinder库,因为“实现特征的类”被编译为实现相应接口的类。另请参阅Is it possible to get all classes that implementing an interface?和相关问题。