"下限"会扭转一种类型的方差,但为什么呢?

时间:2014-04-30 15:18:33

标签: scala type-systems variance lower-bound

scala specification中,有一些关于方差和下限的描述:

  

类型声明或类型参数的下限的方差位置与类型声明或参数的方差位置相反。

这是第44页。

我可以得到一些想法,但我无法清楚地解释清楚。你能给我一些详细的解释吗?

1 个答案:

答案 0 :(得分:2)

基本上,下限必须是不变的或逆变的。比较这些,编译:

class Good1[-A, B >: A]
class Good2[-A, B >: A]

而且,这不是:

class Bad1[+A, B >: A]

如果允许Bad1,您可以执行以下操作:

val worse: Bad1[Any, Int] = new Bad1[Int, Int]

这意味着Int >: Any,这是错误的。