所以我正在构建一个库,我遇到的问题如下:
我有一个特征,比如
package my.library
trait Animal {
def randomFunctions
}
我需要知道的是消费者代码所具有的所有类,即扩展/实现所述特征,例如
package code.consumer
case class Cat extends Animal
case class Dog extends Animal
总而言之:在我的库(具有特征)中,我需要找出扩展/实现特征的所有类(在消费者代码中)。
答案 0 :(得分:3)
我终于通过使用带有以下小片段的反射(https://github.com/ronmamo/reflections)解决了这个问题:
val reflection = new Reflections()
reflection.getSubTypesOf(classOf[Animal])
答案 1 :(得分:0)
选项是使用sealed trait
。这会强制特征的所有实现驻留在与定义特征相同的文件中。
这会破坏您的消费者和库代码的分离,但您肯定会得到所有实现。
我能想到的另一个选择是使用IDE,比如IntelliJ,它可以根据给定的特征找到所有实现。