kotlin 协变与逆变

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/

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • @synthesize和@dynamic分别有什么作用?@property有两个对应的词,一个是 @synthes...
    笔笔请求阅读 3,607评论 0 1
  • 猜想runloop内部是如何实现的?一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一...
    笔笔请求阅读 3,196评论 0 0
  • 《招聘一个靠谱的 iOS》—参考答案(下)说明:面试题来源是微博@我就叫Sunny怎么了的这篇博文:《招聘一个靠谱...
    笔笔请求阅读 2,682评论 0 0
  • 今天上午老师带领我们回顾了昨天的知识点并且讲解了STM32 Rcc时钟控制器的配置 下午自由发挥根据上午讲的知识点...
    马贤龙阅读 1,477评论 0 1
  • 罗胖问了很多人,2017年最重要的一天是哪天。2017年我最重要的一天是6月14号。这一天我升职了,因为这是我进入...
    TeresaW阅读 1,634评论 0 2

友情链接更多精彩内容