45.泛型投射
2019-10-04 本文已影响0人
写代码的向日葵
1.示例代码如下:
fun main(args: Array<String>) {
val list1 = ArrayList<Apple> ()
setFruitList1(list1)
val list2 = ArrayList<Thing> ()
setFruitList2(list2)
}
/**
* 不加out 关键字会报错
* out:接收当前类型或它的子类 相当于java的 ? extends
*
* in:接收当前类型或者它的子类 相当于java的? super
*/
fun setFruitList1(list: ArrayList<out Fruit>) {
println(list.size)
}
fun setFruitList2(list: ArrayList<in Fruit>) {
println(list.size)
}
//箱子
open class Box<T>(val thing: T)
abstract class Thing
//水果
abstract class Fruit : Thing()
//苹果
class Apple : Fruit()
//橘子
class Orange : Fruit()
- out:接收当前类型或它的子类 相当于java的 ? extends
- in:接收当前类型或者它的子类 相当于java的? super