美文网首页kotlin
45.泛型投射

45.泛型投射

作者: 写代码的向日葵 | 来源:发表于2019-10-04 19:47 被阅读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

    相关文章

      网友评论

        本文标题:45.泛型投射

        本文链接:https://www.haomeiwen.com/subject/yfpspctx.html