用户工具


  • covariance(协变):比如 List[T],如果对A及其子类型B,满足 List[B]也符合 List[A]的子类型
  • contravariance(逆变):比如 List[T],如果对A及其子类型B,满足 List[A]也符合 List[B]的子类型
class A{

  def f()=println("A")
}
class B extends A{
  override def f()=println("B")
}

class C[+T](val a:T){}
class D[-T](val a:T){}

object main {
  def main(args: Array[String]) {
    val v1:C[A] = new C[A](new B())
    v1.a.f()
    val v2:D[B] = new D[A](new A())
    v2.a.f()   //这一步会报错,不知道为什
  }
}