美文网首页
kotlin 泛型

kotlin 泛型

作者: 中路杀神ai | 来源:发表于2021-06-28 15:03 被阅读0次

1.协变 逆变 不变

class Test<out T, in E, F>(val t: T, e: E, val f: F) {
    private var e: E = e

    fun get(): T = t

    fun set(e: E) {
        this.e = e
    }

    fun print() {
        println("t = $t, e = $e, f = $f")
    }
}
List<String> List<Any> 无任何关系
List<String> 是 List<out String>子类型

T : 协变 只读 这样的对象成为 生成者 
E : 逆变  写入数据 这样的对象成为 消费者
F :  不变

<? extends T> = out  
<? super T> = in 

java 的PECS 原则:

extends限定了通配符类型的上界,所以我们可以安全地从其中读取;

而super限定了通配符类型的下界,所以我们可以安全地向其中写入。

我们把那些只能从中读取的对象称为生产者(Producer),

我们可以从生产者中安全地读取;只能写入的对象称为消费者(Consumer)。

因此这里就是著名的PECS原则:Producer-Extends, Consumer-Super

 

相关文章

  • 泛型

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

  • Kotlin---泛型

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

  • Kotlin 泛型 VS Java 泛型

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

  • Kotlin for android学习六:泛型

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

  • 泛型

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

  • Kotlin 泛型

    Kotlin 支持泛型, 语法和 Java 类似。例如,泛型类: 泛型函数: 类型变异 Java 的泛型中,最难理...

  • Kotlin:泛型杂谈(下)

    在Kotlin:泛型杂谈(上)中,从泛型扩展属性、非空约束、实例化类型参数三个方面简单介绍了一下Kotlin中泛型...

  • 【Android】 Kotlin(七)泛型

    深入理解Kotlin泛型 Kotlin 的泛型与 Java 一样,都是一种语法糖,即只在源代码中有泛型定义,到了c...

  • Kotlin 泛型

    说起 kotlin 的泛型,就离不开 java 的泛型,首先来看下 java 的泛型,当然比较熟悉 java 泛型...

  • Kotlin 泛型

    Kotlin 泛型 1. 泛型类 定义一个泛型类 使用 在继承中 使用 2. 泛型函数 使用 3. 泛型的擦除 无...

网友评论

      本文标题:kotlin 泛型

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