美文网首页
Kotlin实战学习笔记(九 泛型)

Kotlin实战学习笔记(九 泛型)

作者: Pyrrha_89c6 | 来源:发表于2017-12-10 19:20 被阅读0次
  1. 泛型类型参数
  • 类型参数要么被显示的声明出来,要么可以推导(和Java不同)
  • 函数声明
    fun <T> List<T>.slice(indices: IntRange): List<T>
  • 扩展属性
val <T> List<T>.penultimate: T 
    get() = this.[size - 2]
  • 声明泛型类
class StringList: List<String> { //确定了类型都是String
   override fun get(i: Int) : String {...}
}
class ArrayList<T>: List<T>{
    override fun get(i: Int) : T {...}
}
  • 上界约束
<T extend Type>  //java
<T: Type> // kotlin
//kotlin特有的多个上界约束
fun <T>  foo(p: T) where T: Type1,T: Type2{ ... } //T必须是Type1和Type2的子类或实现类
<T>  == <Any?> //所以类型可为null
<T:Any> // 这样就不能为null了
  1. 运行时类型擦除
  • 和Java一样List<T> 会被擦除为List
value is List<String>  // error,现在的value是List
value is List<*> // pass
  • 用inline函数实现对泛型的检查
inline fun <reified T> isA (value: Any) = value is T
// Kotlin 自带函数
list.filterIsInstance<T>() // 过虑为T类型的数据
  • 带reified的inline函数不能在Java中调用
  1. 变型
    见P250
    kt: <out T> ~= java :<? extends T> //只做生成类型,kotlin叫协变
    kt: <in T> ~= java :<? super T> //只做消费类型,kotlin叫逆变
  • 点变 P254
    书上大概说的是: <out T>可读不可变可作为方法的返回值<in T>可变不读可作为方法是参数
  • <*> == <?>

相关文章

  • Kotlin实战学习笔记(九 泛型)

    泛型类型参数 类型参数要么被显示的声明出来,要么可以推导(和Java不同) 函数声明fun List...

  • Kotlin for android学习六:泛型

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

  • Kotlin 之 泛型

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

  • Kotlin学习笔记 - 泛型

    1. 基本用法 2. 型变 型变包括 协变、逆变、不变 三种: 协变:泛型类型与实参的继承关系相同 逆变:泛型类型...

  • Kotlin学习笔记:泛型

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

  • 泛型

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

  • Kotlin---泛型

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

  • Kotlin学习笔记(10)- 泛型

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正。如果你觉得我的文章对你有用,欢迎关注我,我们一起...

  • Kotlin学习笔记(七)-泛型

    [toc] 前言 这节我们说下Kotlin的泛型。首先默认大家对Java泛型有个基本的认识,如果 不熟悉Java的...

  • Kotlin 泛型 VS Java 泛型

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

网友评论

      本文标题:Kotlin实战学习笔记(九 泛型)

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