如何在Scala案例类中将“ [T]的子代”指定为类型

时间:2019-06-03 18:41:16

标签: scala inheritance

假设我有一个<ul> <li>Lorem ipsum dolor sit amet, sed do eiusmo</li> <li>Lorem ipsum dolor sit amet, sed do eiusmo</li> </ul>类和两个子类

Report

然后有一个case类,其中我要使用其中一个属性(class Report { } class SubReport extends Report { } class SubReport2 extends Report { } 来指定reportType类型之一

SubReport

我的问题是,是否可以在其中指定一个关键字或构造 像case class SubReportClient( reportType: Report //Using parent class ) 这样的类型作为case类的类型,它的类型检查将接受任何子类。

我曾尝试像下面那样实例化case类,但是失败了。

ChildOf(Report)

1 个答案:

答案 0 :(得分:4)

case class SubReportClient(reportType: Report)实际上是正确的,它将接受Report的所有子类,仅此而已。那不是你想要的吗?

如果要访问类中的实际类型,可以将其设为通用类型:

 case class SubReportClient[T <: Report)(reportType: T)

但是SubReportClient(new SubReport)SubReportClient(new SubReport2)是两个不同类的实例。