在他的演讲中CompilersareDatabases,MartinOdersky提出了一个有趣的方差极端案例:classTree[-T]{deftpe:T@uncheckedVariancedefwithType(t:Type):Tree[Type]}T被定义为逆变的,因为将类型树(Tree[Type])视为无类型树(Tree[Nothing]),但不是相反。通常,Scala编译器会提示T显示为tpe方法的返回类型。这就是Martin使用@uncheckedVariance注释关闭编译器的原因。这是翻译成Kotlin的示例:abstractclassTree{abstractfunt
在他的演讲中CompilersareDatabases,MartinOdersky提出了一个有趣的方差极端案例:classTree[-T]{deftpe:T@uncheckedVariancedefwithType(t:Type):Tree[Type]}T被定义为逆变的,因为将类型树(Tree[Type])视为无类型树(Tree[Nothing]),但不是相反。通常,Scala编译器会提示T显示为tpe方法的返回类型。这就是Martin使用@uncheckedVariance注释关闭编译器的原因。这是翻译成Kotlin的示例:abstractclassTree{abstractfunt