scala的协变和逆变

package scaladay02.com.aura

**//协变和逆变 /

**
*** java中泛型的定义是左右两边的泛型要一致

  • 例如多态中一下两种方式是不被允许的

  • List list = new ArrayList();

  • List list2 = new ArrayList();

  • scala中默认情况下也是不被允许的但是scala是非常灵活的

  • 因此在定义泛型时添加符号[+T]协变[-T]逆变则是可以实现以上的两种情况

  • 协变指的是等号左侧的泛型时右边的超类

  • 逆变指的是等号左侧泛型是右侧泛型的子类

  • 多用用于集合操做**
    /*
    object CovarianceInversion {
    def main(args: Array[String]): Unit = {
    val list:Test[Object]=new Testperson

    val list1:Test01[person]=new Test01Object

}
}
//定义协变
class Test[+T]{

}
//定义逆变
class Test01[-T]{

}

class person {
“类”
}

猜你喜欢

转载自blog.csdn.net/weixin_44701192/article/details/92072289