package com.uplooking.bigdata.p4.generic
/**
* scala中的协变和逆变
* 协变:
* val list:List[Object] = List[String]("", "")
* 参数的泛型方向和等号左右整体的方向一致,称之为协变,
* scala默认不支持协变,只有在定义泛型参数的时候明确指定之后,才支持协变
* 在泛型T前面加上字符'+'
*/
class CovarianceAndContravarianceOps {
def main(args: Array[String]): Unit = {
// covarianceOps
contravarianceOps
}
def contravarianceOps: Unit = {
class Test[-T]//逆变
val t:Test[String] = new Test[Object]()
}
def covarianceOps: Unit = {
val list:List[Any] = List[String]("zhangsan", "lisi")
val mList:MyList[Any] = new MyList[String]()
}
class MyList[+T]
}
/**
* scala中的协变和逆变
* 协变:
* val list:List[Object] = List[String]("", "")
* 参数的泛型方向和等号左右整体的方向一致,称之为协变,
* scala默认不支持协变,只有在定义泛型参数的时候明确指定之后,才支持协变
* 在泛型T前面加上字符'+'
*/
class CovarianceAndContravarianceOps {
def main(args: Array[String]): Unit = {
// covarianceOps
contravarianceOps
}
def contravarianceOps: Unit = {
class Test[-T]//逆变
val t:Test[String] = new Test[Object]()
}
def covarianceOps: Unit = {
val list:List[Any] = List[String]("zhangsan", "lisi")
val mList:MyList[Any] = new MyList[String]()
}
class MyList[+T]
}