浅谈kotlin的泛型

Posted by

kotlin跟java一样,同样支持类型参数,也就是我们常说的泛型。泛型的英文单词是generics,通常译作:一般的,广泛的,普通的。在计算机和web开发领域,被称作泛型,也成为通配符类型。泛型可以简单理解为:函数附带的一个参数,支持广泛的数据类型。对于php程序员来说,基本没有这个困扰。但是对于类型严格的编程语言来说,这就有点复杂了。今天就来谈谈,kotlin的泛型。

第一:泛型的的一般示例

这是kotlin官方文档里附带的一个kotlin泛型示例:

class Box<T>(t: T) {
    var value = t
}

解释下这个类:类box拥有一个参数t,参数t继承了对象T。对象T有一个类型参数<T>,告诉我们对象T支持广泛的数据类型。

一般来说,要创建这样类的实例,我们需要提供类型参数:

val box: Box<Int> = Box<Int>(1)

但是如果类型参数可以推断出来,例如从构造函数的参数或者从其他途径,允许省略类型参数:

val box = Box(1) // 1 具有类型 Int,所以编译器知道我们说的是 Box<Int>。

第二:泛型的好处和缺点

泛型最大的好处,是提升了API的灵活性。函数和类,都不会被参数的数据类型所限制,显得更加灵活。

缺点是,增加了程序员的学习成本,降低了开发速度。泛型,绝对是编程语言的类型系统最复杂,最令人头疼,最棘手的部分。

现代化的编程语言,一直致力于简化泛型,Go语言甚至都不支持泛型。kotlin在简化泛型方面,也做了很大的努力。一方面希望保留泛型,同时也希望降低泛型的学习成本和使用难度。

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据