1
このコードを理解するのを助けてください。なぜ反変がコンパイルされるのですか? 私は正確にtest_conのようなタイプを記述する場合にのみ、それは動作します[子供](新しい子供)スカラの形容詞は
class GrandFather {}
class Father extends GrandFather{}
class Child extends Father{}
def test_cov[T <: Father](man: T) = {}
def test_con[T >: Father](man: T) = {}
test_cov(new GrandFather) // failed, and it's right
test_con(new GrandFather)
test_cov(new Child)
test_con(new Child) // don't failed. Why?