- Kotlin 教程
- Kotlin - 首页
- Kotlin - 概述
- Kotlin - 环境设置
- Kotlin - 架构
- Kotlin - 基本语法
- Kotlin - 注释
- Kotlin - 关键字
- Kotlin - 变量
- Kotlin - 数据类型
- Kotlin - 运算符
- Kotlin - 布尔值
- Kotlin - 字符串
- Kotlin - 数组
- Kotlin - 范围
- Kotlin - 函数
- Kotlin 控制流
- Kotlin - 控制流
- Kotlin - if...Else 表达式
- Kotlin - When 表达式
- Kotlin - For 循环
- Kotlin - While 循环
- Kotlin - Break 和 Continue
- Kotlin 集合
- Kotlin - 集合
- Kotlin - 列表
- Kotlin - 集合
- Kotlin - 映射
- Kotlin 对象和类
- Kotlin - 类和对象
- Kotlin - 构造函数
- Kotlin - 继承
- Kotlin - 抽象类
- Kotlin - 接口
- Kotlin - 可见性控制
- Kotlin - 扩展
- Kotlin - 数据类
- Kotlin - 密封类
- Kotlin - 泛型
- Kotlin - 委托
- Kotlin - 解构声明
- Kotlin - 异常处理
- Kotlin 有用资源
- Kotlin - 快速指南
- Kotlin - 有用资源
- Kotlin - 讨论
Kotlin - 泛型
像 Java 一样,Kotlin 提供了更高阶的变量类型,称为泛型。在本章中,我们将学习 Kotlin 如何实现泛型,以及作为开发人员我们如何使用泛型库中提供的功能。在实现方面,泛型与 Java 非常相似,但 Kotlin 开发人员引入了两个新关键字“out”和“in”,使 Kotlin 代码更具可读性,并方便开发人员使用。
在 Kotlin 中,类和类型是完全不同的概念。根据示例,List 是 Kotlin 中的一个类,而 List<String> 是 Kotlin 中的一个类型。以下示例描述了 Kotlin 中泛型的实现方式。
fun main(args: Array<String>) { val integer: Int = 1 val number: Number = integer print(number) }
在上面的代码中,我们声明了一个“整数”,然后将其赋值给一个数字变量。这是可能的,因为“Int”是 Number 类的子类,因此类型转换会在运行时自动发生,并输出“1”。
让我们进一步了解 Kotlin 中的泛型。当我们不确定将在应用程序中使用的数据类型时,最好使用泛型数据类型。通常,Kotlin 中的泛型由<T>定义,其中“T”代表模板,可以由 Kotlin 编译器动态确定。在以下示例中,我们将看到如何在 Kotlin 编程语言中使用泛型数据类型。
fun main(args: Array<String>) { var objet = genericsExample<String>("JAVA") var objet1 = genericsExample<Int>(10) } class genericsExample<T>(input:T) { init { println("I am getting called with the value "+input) } }
在上面的代码片段中,我们创建了一个具有泛型返回类型的类,表示为<T>。查看 main 方法,我们在运行时通过提供值类型动态定义了它的值,同时创建此类的对象。这就是 Kotlin 编译器解释泛型的方式。当我们在我们的编码环境中运行此代码时,将在浏览器中获得以下输出。
I am getting called with the value JAVA I am getting called with the value 10
当我们想要将泛型类型分配给其任何超类型时,我们需要使用“out”关键字,而当我们想要将泛型类型分配给其任何子类型时,我们需要使用“in”关键字。在以下示例中,我们将使用“out”关键字。类似地,您可以尝试使用“in”关键字。
fun main(args: Array<String>) { var objet1 = genericsExample<Int>(10) var object2 = genericsExample<Double>(10.00) println(objet1) println(object2) } class genericsExample<out T>(input:T) { init { println("I am getting called with the value "+input) } }
上述代码将在浏览器中产生以下输出。
I am getting called with the value 10 I am getting called with the value 10.0 genericsExample@28d93b30 genericsExample@1b6d3586