【发布时间】:2017-10-11 12:12:53
【问题描述】:
我有一个看起来像这样的特质:
trait Processor[+T <: Document] {
def process[D >: T <: Document](doc: D)
}
如果我用process[D >: T](doc: D) 声明process 方法,我无法访问Document 类中的方法。
我不知道为什么我需要在process方法中重复上界<: Document。
那么,两个问题:
- 这是应该的使用方式吗?
- 为什么类型系统不自动从特征定义中获取上限。
【问题讨论】:
-
在
process[D >: T](doc: D)中,D是T的超类型,Document的子类型,所以D不一定是Document。
标签: scala generics types covariance