没有合适的资源?快使用搜索试试~ 我知道了~
前言 Kotlin 泛型的基本语法类似于 Java ,不过出于型变安全,不支持 Java 中的<? extends T>,<?super T> 通配符型变约束,而是采用类似 C# 的 in,out 用于支持协变和逆变,这同时避免了处理子类型化,父类化的问题(即Java泛型中典型的List<T> 不是 List<Object>的子类型的问题); 基本的泛型语法可以参考官方中文文档:https://www.kotlincn.net/docs/reference/ 泛型实参的继承关系对泛型类型的影响 协变:泛型类型与实参的继承关系相同 逆变:泛型类型与实参的继承关系相反 不变:泛型类型没有关系 协
资源推荐
资源详情
资源评论
Kotlin中协变、逆变和不变示例详解中协变、逆变和不变示例详解
前言前言
Kotlin 泛型的基本语法类似于 Java ,不过出于型变安全,不支持 Java 中的<? extends T>,<?super T> 通配符型变约束,
而是采用类似 C# 的 in,out 用于支持协变和逆变,这同时避免了处理子类型化,父类化的问题(即Java泛型中典型的List<T>
不是 List<Object>的子类型的问题);
基本的泛型语法可以参考官方中文文档:https://www.kotlincn.net/docs/reference/
泛型实参的继承关系对泛型类型的影响
协变:泛型类型与实参的继承关系相同
逆变:泛型类型与实参的继承关系相反
不变:泛型类型没有关系
协变点:返回值类型是泛型参数类型
逆变点:入参类型是泛型参数类型
@UnsafeVariance:协变点违例,告诉编译器,没事,你就按照我的意思执行
1、泛型、泛型
什么是泛型?泛化的类型或者是类型的抽象,鸭子类型(看起来像鸭子,走起来也像鸭子,就是鸭子类型)在静态语言中的一
种静态实现
1、抽象类,是这个类的本质,它是什么
2、接口,关心类能够做什么,行为能力
举两个例子举两个例子
两个数的比较大小
// 需要有对比的功能,没有的话就会报错a<b
//加入限制 Comparable 具有对比的功能
fun<T:Comparable<T>> maxOf(a:T,b:T):T{
return if (a<b) b else a
}
方法调用
val a=2
val b=3
val maxOf = maxOf(2, 3)
println("shiming "+maxOf)
输出结果
shiming 3
让一个类具备对比的能
data class Complex(val a:Double,val b:Double):Comparable<Complex>{
override fun compareTo(other: Complex): Int {
return (value()-other.value()).toInt()
}
fun value():Double{
return a*a+b*b
}
override fun toString(): String {
return "$a*$a+$b*$b="+(a*a+b*b)
}
}
方法调用
资源评论
weixin_38680393
- 粉丝: 6
- 资源: 912
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功