我想列出所有实现特定trait的case class。我目前正在使用Clapper ClassUtil来做这件事。我能够获取直接实现trait的case class。然而,我无法获取未直接实现trait的其他类。如何获取所有直接或间接实现trait的类?
val finder = ClassFinder()
finder.getClasses().filter(_.isConcrete).filter(_.implements("com.myapp.MyTrait"))
Scala版本: 2.11
Clapper Class Util版本: 1.0.6
是否有其他方式可以获取这些信息?有人能指点我正确的方向吗?
我尝试使用scala.reflect
,但无法理解如何获取信息。
EDIT:
样例特征和用途:
trait BaseEntity
trait NamedEntity{ val name:String}
trait MasterDataEntity extends NamedEntity
case class Department(id:Long, override val name:String) extends MasterDataEntity
case class Employee(id:Long, name:String) extends BaseEntity
case class User(id:Long, override val name:String) extends NamedEntity
现在,如果我将特征设为
NamedEntity
,我应该能够获取Department
和User
,因为它们都直接或间接实现了NamedEntity
。使用implements
方法,只会给出User。我还尝试使用interfaces
方法,这也只提供直接的超类。