kotlin

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()
上一篇下一篇

猜你喜欢

热点阅读