Scala协变类型声明有上限,为什么方法需要exlplicitly重复上限
我有一个特点是这样的:Scala协变类型声明有上限,为什么方法需要exlplicitly重复上限,scala,generics,types,covariance,Scala,Generics,Types,Covariance,我有一个特点是这样的: trait Processor[+T <: Document] { def process[D >: T <: Document](doc: D) } trait处理器[+T:T:T](doc:D),我无法从文档类访问方法 我不知道为什么我需要重复上界,方法中的上界在D,而不是t。假设你没有设置上限,那么D可以是T也是的任何东西,例如Any。因此,编译器必须假定D可以是任何,因此不能提供更多的方法。在过程[D>:T](doc:D)中,D是T的超类型
trait Processor[+T <: Document] {
def process[D >: T <: Document](doc: D)
}
trait处理器[+T:T:T](doc:D)
,我无法从文档
类访问方法
我不知道为什么我需要重复上界,
方法中的上界在D
,而不是t
。假设你没有设置上限,那么D
可以是T
也是的任何东西,例如Any
。因此,编译器必须假定D
可以是任何,因此不能提供更多的方法。在过程[D>:T](doc:D)
中,D
是T
的超类型,它是文档的子类型,因此D
不一定是文档。现在我觉得问这个问题很傻。谢谢