在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
}

最新文章

  1. Audio 的一些小笔记
  2. springMVC 的工作原理和机制(转)
  3. javascript事件代理(Event Delegation)
  4. PHP 错误与异常 笔记与总结(4)通过 trigger_error 触发 PHP 错误
  5. struts json登录
  6. HDU 5422 Rikka with Graph
  7. P3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队
  8. C++ Template之技巧性基础知识
  9. [HDOJ4635]Strongly connected(强连通分量,缩点)
  10. git 秘钥的生成
  11. Easyui弹出窗体在iframe的父级页面显示
  12. Chinese Rings
  13. 有奖试读—Windows PowerShell实战指南(第2版)
  14. sql server导出数据,详细操作!(自用)
  15. Java的MVC模式简介
  16. 如何监视和更新 Azure 中的 Linux 虚拟机
  17. PHP二维数组如何根据某个字段排序
  18. AMQP学习 &amp; RabbitMQ 与 ActiveMQ、ZeroMQ以及Kafka的比较
  19. ShowDoc 搭建 (未成功....)
  20. github里如何删除一个repository仓库

热门文章

  1. Rocketmq 集群部署
  2. MySQL数据库的二进制安装、源码编译和基础入门操作
  3. 02.python网络爬虫第二弹(http和https协议)
  4. 算法之暴力破解和kmp算法 判断A字符串是否包含B字符串
  5. 用js刷剑指offer(包含min函数的栈)
  6. 用js刷剑指offer(二进制中一的个数)
  7. C#当中的BeginInvoke和EndInvoke
  8. js重写页面之后后台如何获取重写后的控件值
  9. 部署 &amp; virtualen
  10. POJ3336 Making the Grade