【发布时间】:2015-12-30 13:41:19
【问题描述】:
我想列出所有实现特定特征的案例类。我目前正在使用Clapper ClassUtil 来执行此操作。我能够获得直接实现特征的案例类。但是,我无法获得不直接实现该特征的其他类。如何获得所有直接或间接实现特征的类。 ?
val finder = ClassFinder()
finder.getClasses().filter(_.isConcrete).filter(_.implements("com.myapp.MyTrait"))
Scala 版本:2.11
Clapper 类实用程序版本: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
现在,如果我将 trait 指定为 NamedEntity,我应该能够同时获得 Department 和 User,因为它们都直接或间接地实现了 NamedEntity。使用implements 方法,它只会给用户。我也尝试使用interfaces 方法,它也只提供直接超类。
【问题讨论】:
-
您能否定义三个特征/类及其关系来说明问题?
-
我已经添加了示例特征和案例类用法。
标签: scala reflection traits