如何理解关于"协方差"和"逆变"的两句话?

Fre*_*ind 4 type-systems scala

我正在阅读"Scala in depth"的第一部分,第一部分有两个关于"covariance"和"contrvariance"的句子:

协方差(+ T或?extends T)是指类型可以在继承层次结构中强制转换.

逆变量(-T或?super T)是指类型可以强制继承层次结构.

我已经阅读了一些关于"协方差"和"逆变"的文件,但在这种背景下我无法理解"强迫"和"强迫"这个词.

Gol*_*lly 10

[TOP / ABSTRACT]

Thing
  ?
Animal
  ?
Human
  ?
Programmer
  ?
Scala Dev

[BOTTOM / SPECIFIC]

协方差:接受T或更低.
我问了一个[+Human],我会接受以下任何一个:[Human, Programmer, Scala Dev].

逆变:接受T或更高.
我问了一个[-Human],我会接受以下任何一个:[Thing, Animal, Human].

Inariance:接受T而且只有T.

强迫.
在类型层次结构中向上/向下强制类型意味着检查类型的超/子类型是否传递了类型约束.例如,共变的功能需要Human,但我们只得到了Programmer,也没关系,编译器可以强制Programmer成为Human满足类型约束.

  • 强迫程序员进入人类将"强迫".嘿,我刚才意识到这与你粘贴的摘录相反!嗯,我说作者犯了一个错误. (2认同)