原创

Kotlin泛型入门

Kotlin也提供了泛型的支持,Kotlin提供了声明处型变和使用处型变两种支持,而Java只支持使用处型变。

一、定义泛型接口、类

可以为任何类、接口增加泛型声明。

package test0709

//定义Apple类是使用了泛型声明
open class Apple<T> {
    //使用泛型T定义属性
    open var info: T?

    constructor() {
        info = null
    }

    //使用泛型T来定义构造器
    constructor(info: T) {
        this.info = info
    }
}

fun main(args: Array<String>) {
    //由于传给泛型T的是String,所以构造器的参数只能是String
    var a1: Apple<String> = Apple<String>("红苹果")
    println(a1.info)
    //由于传给泛型T的是Int,所以构造器的参数只能是Int
    var a2: Apple<Int> = Apple(5)
    println(a2.info)
    //构造器的参数是Double,因此系统可推断出泛型形参为Double类型
    var a3 = Apple(1.23)
    println(a3.info)
}

输出结果:

红苹果
5
1.23

二、从泛型类派生子类

当创建了带泛型声明的接口、父类之后,可以为该接口创建实现类,或者从该父类派生子类。当使用这些接口、父类时不能再包含泛型形参。

在定义类、接口、方法时可以声明泛型形参,在使用类、接口、方法时应该为泛型形参传入实际的类型。

Kotlin要求始终为泛型参数明确地指定类型,而不管是通过显式指定,还是让系统进行推断。

学海无涯苦作舟

我的微信公众号.jpg

基本语法
  • 作者:HunterArley (联系作者)
  • 发表时间:2019-11-29 11:05
  • 版权声明:本网站部分内容转载于合作站点或其他站点,但都会注明作/译者和原出处。如有不妥之处,敬请指出。
  • 公众号转载:请在文末添加作者公众号二维码