美文网首页
Kotlin之泛型 变型

Kotlin之泛型 变型

作者: 钦_79f7 | 来源:发表于2019-12-20 17:04 被阅读0次

协变

如果A是B的子类型,那么List<A> 就是 List<B> 的子类型。这样的类或者接口被称为协变的

out

类型参数 T 上的关键字 out 有两层含义:

  • 子类型化会被保留(Producer<Cat> 是 Producer<Animal> 的子类型)
  • T 只能用在 out 位置

==注意==:

  • 构造方法的参数既不在 in 位置,也不在 out 位置。即使类型参数声明成了 out,仍然可以在构造方法参数的声明中使用它。
  • 如果把类型的实例当成一个更泛化的类型的实例使用,变型会防止该实例被误用:不能调用存在潜在危险的方法。构造方法不是那种在实例创建之后还能调用的方法,因此它不会存在潜在的危险。
  • 位置规则值覆盖了类外部可见的(public、protected 和 internal)API。私有方法的参数既不在in 位置也不在 out 位置。变型规则只会防止 外部使用者对类的误用但不会对类自己的实现起作用。

相关文章

  • Kotlin---泛型

    Kotlin不变型泛型 Kotlin的不变型泛型和Java一样,通过声明泛型类型来使用泛型类。而该种泛型声明后,则...

  • Kotlin之泛型 变型

    协变 如果A是B的子类型,那么List 就是 List 的子类型。这样的类或者接口被称为协变的。 out 类型...

  • Kotlin中的泛型与变型

    Kotlin中的泛型 优点:1.代码复用。2.编译期类型检查,减少类型转换出错 缺点:因为类型擦除机制,有时可能不...

  • 泛型

    与Java泛型相同,Kotlin同样提供了泛型支持。对于简单的泛型类、泛型函数的定义,Kotlin 与 Java ...

  • Kotlin学习之泛型

    Kotlin学习之泛型 Kotlin的泛型与Java一样,都是一种语法糖,只在源代码里出现,编译时会进行简单的字符...

  • Kotlin 泛型 VS Java 泛型

    建议先阅读我的上一篇文章 -- Java 泛型 和 Java 泛型一样,Kotlin 泛型也是 Kotlin 语言...

  • Kotlin for android学习六:泛型

    前言 kotlin官网和kotlin教程学习教程的笔记。 1. 声明泛型 2. 泛型约束 : 对泛型的类型上限进行...

  • Kotlin 之 泛型

    参考: Kotlin 实战 Java 泛型推荐阅读:https://www.zhihu.com/question/...

  • Kotlin | 9. 泛型

    本章内容包括: 声明泛型函数和类类型擦除和实化类型参数声明点变型和使用点变型 9.1 泛型类型参数 9.2 运行时...

  • 泛型

    Kotlin 泛型详解 声明一个泛型类 声明一个泛型方法 泛型约束 List 和 List 是...

网友评论

      本文标题:Kotlin之泛型 变型

      本文链接:https://www.haomeiwen.com/subject/ksuinctx.html