首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将"child of [T]“指定为Scala case类中的类型

如何将"child of [T]“指定为Scala case类中的类型
EN

Stack Overflow用户
提问于 2019-06-04 02:41:16
回答 1查看 45关注 0票数 1

假设我有一个Report类和两个子类

代码语言:javascript
复制
class Report {
}

class SubReport extends Report {
}

class SubReport2 extends Report {
}

然后我有一个SubReport类,在其中一个属性(reportType)中,我想用来指定一个case类型

代码语言:javascript
复制
case class SubReportClient(
    reportType: Report //Using parent class
)

我的问题是,有没有一个关键字或构造可以指定像ChildOf(Report)这样的东西作为case类中的类型,并且它会让类型检查接受任何子类。

我尝试过像下面这样实例化case类,但失败了。

代码语言:javascript
复制
SubReportClient(
    classOf[SubReport]
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-04 02:56:11

case class SubReportClient(reportType: Report)实际上是正确的,它将接受Report的所有子类,而不接受其他任何子类。这不是你想要的吗?

如果你想访问类中的实际类型,你可以让它泛型:

代码语言:javascript
复制
 case class SubReportClient[T <: Report)(reportType: T)

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56432876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档