假设我有一个Report
类和两个子类
class Report {
}
class SubReport extends Report {
}
class SubReport2 extends Report {
}
然后我有一个 case 类,其中在其中一个属性 ( reportType
中,我想用来指定SubReport
类型之一
case class SubReportClient(
reportType: Report //Using parent class
)
我的问题是,是否有一个关键字或结构可以指定类似于 ChildOf(Report)
case 类中的类型,它将使类型检查接受任何子类。
我尝试像下面这样实例化 case 类,但失败了。
SubReportClient(
classOf[SubReport]
)
case class SubReportClient(reportType: Report)
实际上是正确的,它将接受Report
的所有子类,而没有别的。这不是你想要的吗?
如果要访问类中的实际类型,可以将其设置为泛型:
case class SubReportClient[T <: Report)(reportType: T)
但这样SubReportClient(new SubReport)
和SubReportClient(new SubReport2)
是两个不同类的实例。