- 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 - 中断并继续
- 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