1

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

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

在第 44 页。

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

4

1 回答 1

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,这是错误的。

于 2014-04-30T15:31:36.890 回答