美文网首页Kotlin
kotlin 协变与逆变

kotlin 协变与逆变

作者: imkobedroid | 来源:发表于2018-03-15 10:31 被阅读0次

    kotlin中没有像java一样的<? extends T>这样的方式,也没有父类向子类转换,但是为了数据的安全性,提出了协变与逆变的说法:

    概念:
    协变:类型向上转换,像java中的子类向父类转换
    逆变:类型向下转换,父类向子类转换

    特点:
    协变只能出现在返回值中,逆变只能出现在方法的参数中,还有一种既不是协变也不是逆变的类型,什么地方都可以使用例如:

    image.png

    因为其中的T 出现在了全局变量的地方,所以既不是协变也不是逆变。

    逆变的情况(作为参数传入并且不能接受BaseActivityView的泛型作为返回值):


    image.png

    协变的情况(作为返回值并且不能接受BaseActivityView的泛型作为参数传入):


    image.png

    使用场景:


    image.png

    可以移步这里进行更深层次理解 https://neonmori.github.io/2017/07/30/%E7%90%86%E8%A7%A3Kotlin%E4%B8%AD%E7%9A%84%E6%B3%9B%E5%9E%8B%E4%B8%8E%E5%8F%98%E4%BD%93/

    相关文章

      网友评论

        本文标题:kotlin 协变与逆变

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