【发布时间】:2019-11-16 16:05:39
【问题描述】:
我有一个下面的类,它使用协方差注释和另一个类型参数作为它的方法,类类型参数是下限
class MyQueue[+T]{
def add[U >: T](arg:U):Unit= {
println("Arg value :"+ arg)
}
}
鉴于上面的代码,我不明白为什么下面的行会成功执行。根据我对下限的理解,方法“add”应该只接受 Int 类型或其超类型的值。
val q1:MyQueue[Int] = new MyQueue[Int]
q1.add("string")
但是,如果我们如下明确指定类型参数,它会给出预期的编译错误(字符串不符合方法 add 的类型参数边界)
q1.add[String]("string")
【问题讨论】:
标签: scala covariance type-parameter type-bounds