kotlin泛型类型变异
2024-09-01 23:22:39
在java泛型中中会有 ? extends E 可以解决类似于List<String> 赋给List<Object> 的问题,但是在kotlin泛型中并没有提供通配符,而是out和in关键字,用out声明的泛型占位符只能在获取泛型类型赋值,如函数的返回值,用in声明的泛型占位符只能在设置泛型类型值得地方,如函数的参数.
abstract class Source<out T>{
abstract fun nextT():T
}
fun demo (str:Source<String>){
val objects : Source<Any> =str//Any是非空类型的根,Any?是可空类型的根,由于Any?是Any的根,所以Any?是Kotlin的类型层次结构的最顶端。如java中的object
}
fun demo (x:Comparable<Number>){
x.comparable(10.0)
var y:Comparable<Double> =x
}
abstract class Comparable<in T>{
abstract fun comparable(other: T):Int
}
最新文章
- Audio 的一些小笔记
- springMVC 的工作原理和机制(转)
- javascript事件代理(Event Delegation)
- PHP 错误与异常 笔记与总结(4)通过 trigger_error 触发 PHP 错误
- struts json登录
- HDU 5422 Rikka with Graph
- P3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队
- C++ Template之技巧性基础知识
- [HDOJ4635]Strongly connected(强连通分量,缩点)
- git 秘钥的生成
- Easyui弹出窗体在iframe的父级页面显示
- Chinese Rings
- 有奖试读—Windows PowerShell实战指南(第2版)
- sql server导出数据,详细操作!(自用)
- Java的MVC模式简介
- 如何监视和更新 Azure 中的 Linux 虚拟机
- PHP二维数组如何根据某个字段排序
- AMQP学习 &; RabbitMQ 与 ActiveMQ、ZeroMQ以及Kafka的比较
- ShowDoc 搭建 (未成功....)
- github里如何删除一个repository仓库