当前位置: 首页 > article >正文

Kotlin泛型: 协变|逆变|不变

引言

无论java 通配符上限还是下限,都多少存在缺陷,要么存不安全,要么取不安全。而kotlin就解决这个问题。让out 纯输出, 让in纯输入。

java这块知识: java泛型的协变、逆变和不变-CSDN博客

协变

生产者out T  协变    【out T 此泛型能够被获取 读取 所以是out】

例子:

class   Producer<out T>{

// out T 代表整个生产者类里面 这个 T 只能被读取 ,不能修改 。

// 不能被修改(编译不通过)

fun consumer (item : T){} //  这里报错。

// 只能被读取

fun producer() : T {}

}

逆变

消费者 in T 逆变 【in T 此泛型只能被修改 更新所以是 in】

例子:

class  Consumer <in T>{

        //只能被修改

        fun comsumer(item : T){} // 消费代码

        //不能被读取

        fun producer() : T{} //编译不通过        

}

不变

// 生产者和消费者 T。默认情况下是 不变

能读取 能修改 。


http://www.kler.cn/a/602385.html

相关文章:

  • 目标跟踪评估及画图
  • 如何快速下载并安装 Postman?
  • 大模型——Text2SQL 的实现探究
  • css white-space: pre-line; 用处大
  • 路由工程师大纲-4:前后端知识体系梳理及联系
  • Java问题小记——入职心得
  • WordPress WooCommerce 本地文件包含漏洞(CVE-2025-1661)
  • deploy myEclipse j2ee project to server没反应
  • JVM方法逃逸
  • 鸿蒙北向源码开发: xts用例单部件编译并执行测试用例
  • 树莓派ollama docker报错尝试网上方法
  • 构建一个解释器的完整过程:以C语言为核心的技术探索
  • Ymodem调试笔记
  • 线下媒体邀约
  • 在 Ubuntu 20.04 上重新启动网络
  • air780eq 阿里云
  • 《网络安全等级测评报告模版(2025版)》
  • Qt高分屏自适应
  • tensorboard报错MessageToJson() got an unexpected keyword argument
  • ElementUI dropdown触发显示时阻止事件冒泡