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.pswp.cn/news/899164.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/899164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Excel使用技巧】某列保留固定字段或内容

目录 ✅ 方法一&#xff1a;使用 Excel 公式提取 body 部分 &#x1f50d; 解释&#xff1a; ✅ 方法二&#xff1a;批量处理整列数据 &#x1f6a8; 注意事项 &#x1f6a8; 处理效果 我想保留Excel某一列的固定内容&#xff0c;比如原内容是&#xff1a; thread entry i…

C# System.Text.Encoding 使用详解

总目录 前言 在C#编程中&#xff0c;处理字符串和字节数组之间的转换是一个常见的任务。System.Text.Encoding类及其派生类提供了丰富的功能&#xff0c;帮助开发者实现不同字符编码之间的转换。本文将详细讲解System.Text.Encoding类的使用方法&#xff0c;包括常用编码的介绍…

Pre-flash和Main flash

在相机拍照过程中&#xff0c;Pre-flash&#xff08;预闪光&#xff09; 和 Main flash&#xff08;主闪光&#xff09; 是常见的两种闪光灯使用模式&#xff0c;通常用于提高低光环境下的拍摄质量&#xff0c;尤其在自动曝光&#xff08;AE&#xff09;和自动对焦&#xff08;…

Kafka 4.0 发布:KRaft 替代 Zookeeper、新一代重平衡协议、点对点消息模型、移除旧协议 API

KRaft 全面替代 ZooKeeper Apache Kafka 4.0 是一个重要的里程碑&#xff0c;标志着第一个完全无需 Apache ZooKeeper 运行的主要版本。 通过默认运行在 KRaft 模式下&#xff0c;Kafka 简化了部署和管理&#xff0c;消除了维护单独 ZooKeeper 集群的复杂性。 这一变化显著降…

SFT实验报告

大模型微调实验报告* 实验目标 梳理大模型微调方法&#xff0c;评估各种基座和微调方法的实验效果。 基础模型 \1.Llama \2.Qwen \3.Chatglm4 \4. 微调策略 LoRA系列 低秩适配&#xff08;LoRA&#xff09;的核心思想是冻结原始参数&#xff0c;通过低秩分解引入可训…

LLM - R1 强化学习 DRPO 策略优化 DAPO 与 Dr. GRPO 算法 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/146533892 在强化学习算法中&#xff0c;DAPO (Decoupled Clip and Dynamic Sampling Policy Optimization)&#xff0c;通过解耦裁剪和动态采样策…

美摄科技智能汽车视频延迟摄影解决方案,开启智能出行新视界

在智能汽车时代&#xff0c;车载影像技术正以前所未有的速度发展&#xff0c;成为提升驾乘体验和满足用户多样化需求的关键因素。美摄科技凭借其卓越的技术实力和创新精神&#xff0c;推出了智能汽车视频延迟摄影解决方案&#xff0c;为智能汽车行业带来了一场视觉盛宴。 一、…

[250325] Claude AI 现已支持网络搜索功能!| ReactOS 0.4.15 发布!

目录 Claude AI 现已支持网络搜索功能&#xff01;ReactOS 0.4.15 发布&#xff01; Claude AI 现已支持网络搜索功能&#xff01; 近日&#xff0c;Anthropic 公司宣布&#xff0c;其 AI 助手 Claude 现在可以进行网络搜索&#xff0c;为用户提供更及时、更相关的回复。这项新…

代码规范之Variable Names变量名

代码规范之Variable Names变量名 golang中 官方文档&#xff1a;https://go.dev/wiki/CodeReviewComments#variable-names Variable names in Go should be short rather than long. This is especially true for local variables with limited scope. Prefer c to lineCoun…

Mybatis_plus

前言 Mybatis_plus 是在 mybatis 的基础上进行了增强&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。本文章只做简单的使用介绍&#xff0c;更加详细的内容大家可以参考官网。 下面是mybatis_plus 官网地址&#xff1a; mybatis_plu…

深圳问顶安全科技有限公司asktopsec是做什么的?

深圳问顶安全科技有限公司&#xff0c;是一家专业的AI与应用安全公司。 全球领先的AI、Android、IOS应用安全解决方案提供商&#xff0c;官网&#xff1a;https://asktopsec.com 问顶安全主要为企业提供AI和应用安全服务 移动应用安全检测、移动应用安全加固、AI智能体安全、AI…

鸿蒙OS 5 架构设计探秘:从分层设计到多端部署

文章目录 鸿蒙OS架构设计探秘&#xff1a;从分层设计到多端部署一、鸿蒙的分层架构设计二、模块化设计的精髓三、智慧分发设计&#xff1a;资源的动态调度四、一次开发&#xff0c;多端部署的实践总结与思考 鸿蒙OS架构设计探秘&#xff1a;从分层设计到多端部署 最近两年来&a…

idea 没有 add framework support(添加框架支持)选项

在 IntelliJ IDEA 2023 中&#xff0c;若需通过设置手动添加 “添加框架支持” 菜单项&#xff0c;可按照以下步骤操作&#xff1a; 手动添加 “添加框架支持” 菜单项 打开设置 点击顶部菜单栏的 File&#xff08;文件&#xff09; -> Settings&#xff08;设置&#xff09…

计算机网络--传输层(2)

传输层核心机制深度解析 一、可靠传输实现机制 1. 校验和机制 技术原理&#xff1a; 使用16位二进制反码求和算法&#xff0c;计算范围包括TCP伪首部&#xff08;12字节&#xff09;、TCP首部&#xff08;20字节&#xff09;和数据部分接收端重新计算校验和&#xff0c;若与…

再探带权并查集

典型例题 Acwing 权值 故名思义&#xff0c;在带权并查集中&#xff0c;我们需要让每个节点携带一个**“权值”**。 那么这个权值应该是什么呢&#xff1f;其实答案就在并查集当中。 由于在并查集当中我们可以在 O ( 1 ) O(1) O(1) 时间内找到一个节点的根节点&#xff0c;那…

Vala编成语言教程-构造函数和析构函数

构造函数 Vala支持两种略有不同的构造方案&#xff1a;我们将重点讨论Java/C#风格的构造方案&#xff0c;另一种是GObject风格的构造方案。 Vala不支持构造函数重载的原因与方法重载不被允许的原因相同&#xff0c;这意味着一个类不能有多个同名构造函数。但这并不构成问题&…

本地部署Stable Diffusion生成爆火的AI图片

直接上代码 Mapping("/send") Post public Object send(Body String promptBody) { JSONObject postSend new JSONObject(); System.out.println(promptBody); JSONObject body JSONObject.parseObject(promptBody); List<S…

python爬虫WASM

WASM 一.WASM简介 1.1 WASM定义 ​ WebAssembly(简称wasm)是一个虚拟指令集体系架构(virtual ISA),整体架构包括核心的ISA定义、二进制编码、程序语义的定义与执行,以及面向不同的嵌入环境(如Web)的应用编程接口(WebAssembly API)。是一种运行在现代网络浏览器中的…

Docker镜像迁移方案

Docker镜像迁移方案 文章目录 Docker镜像迁移方案一&#xff1a;背景二&#xff1a;操作方式三&#xff1a;异常原因参考&#xff1a; 一&#xff1a;背景 比如机器上已经有先有的容器&#xff0c;但是docker pull的时候是失败的二&#xff1a;操作方式 1、停止正在运行的容器…

关于跨域问题(本地前端访问服务器端接口跨域出错)

问题来源&#xff1a; 当服务器封装了接口但是本地电脑端前端访问出现跨域问题。 解决方案&#xff1b; 1、使用ipconfig 查看本地电脑的ip地址 ipconfig 2、在后端接口处配置如下代码 allow_origins["http://本地ip地址:3001", # 局域网内其他设备访问的本地…