【Kotlin学习】泛型——泛型类型参数、擦除和实化类型参数

本文详细介绍了Kotlin中的泛型类型参数,包括它们如何在编译时帮助类型安全,以及如何在函数和类中声明和使用。泛型函数和属性允许编写通用代码,而类型参数约束确保了类型兼容性。此外,讨论了类型参数的擦除以及实化类型参数的概念,实化类型参数仅在内联函数中可用,允许在运行时检查类型。最后,展示了实化类型参数在类型检查、反射和Java API适配中的应用,并明确了其使用限制。

泛型类型参数

泛型允许你定义带类型形参的类型,当这种类型的实例被创建出来的时候,类型形参被替换成称为类型实参的具体类型。比如有一个list类型的变量,弄清它能存储哪种事物是很有意义的。类型形参可以准确地进行描述,和一般类型一样,kotlin编译器也能推导出类型实参

在这里插入图片描述

因为传给listOf的值是字符串,编译器推导出你在创建一个List<String>若你想创建一个空列表,此时编译器无法推导,所以要显式声明类型。就创建列表来说,可以选择在变量声明中说明泛型的类型,也可以在创建列表的函数中说明类型实参

在这里插入图片描述

泛型函数和属性

若希望一个使用列表的函数在任何列表上都能使用,需要编写一个泛型函数,泛型函数有它自己的类型实参,这些类型实参在每次函数调用时都必须替换成具体的类型实参

在这里插入图片描述

第一个<T>是类型形参,第二个<T>是接收者的类型形参,第三个<T>是返回类型的类型形参。当你在一个具体的列表上调用这个函数时可以显式指定类型实参,但大部分情况编译器会帮你推导出来

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值