Kotlin 泛型.md
前置知识
kotlin泛型搞不定很大原因是java泛型不熟悉。
所以在学习Kotlin泛型前,要对Java泛型有充分的认识,已经在另外一篇文章详细介绍了,这里不做解读。
下面关于Any与Any?。
String?的基类是Any?,String的基类是Any,Any的基类又是Any?。
Any和Object是不同的。Any并没有Object的范围大。
Any? 等同于 Object 。
Kotlin泛型
声明处型变(declaration-site variance)与类型投影(type projections)
协变与逆变
? extends
相当于out
,? super
相当于in
逆变性(contravariance)
星投影
泛型函数
不仅类可以有类型参数。函数也可以有。类型参数要放在函数名称之前
PECS法则
参考
1 | 对于 Foo <out T : TUpper>,其中 T 是一个具有上界 TUpper 的协变类型参数,Foo <*> 等价于 Foo <out TUpper>。 这意味着当 T 未知时,你可以安全地从 Foo <*> 读取 TUpper 的值。 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LT的编程笔记!