如何在 Scala 事例类中将"child of [T]"指定为类型



假设我有一个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)是两个不同类的实例。

相关内容

最新更新