我正在阅读“深入Scala”一书,发现了一些我无法理解的观点。
首先,让我们看一下书中关于“下界”和“上限”的例子:
type B <: Traversable[Int] // Upper bound definition
type B >: List[Int] // Define lower bound restriction
我能理解他们。
但我在第 135 页看到这句话:
指定下限约束还允许您利用在下限上定义的成员。上限约束并不意味着类型上可能包含哪些成员,但在组合多个参数化类型时很有用。
我在想是不是错了?它应该是:
指定上限约束还允许您利用在上限上定义的成员。下限约束并不意味着某个类型上可能有哪些成员,但在组合多个参数化类型时很有用。
不应该吗?
在我看来,
class Hello[T] {
def test1[U >: T](x: U): U = x
def test2[U <: T](x: U): T = x
}
test1
是lower bound
和test2
是upper bound
,对吧?