Kotlin泛型 (3)泛型类

  泛型类的声明,是在类名后面添加 ,下面通过自定义队列示例介绍泛型类的使用。

class Queue {
    private val elements: MutableList

    init {
        elements = ArrayList()
    }

    fun push(ele: T): Boolean = elements.add(ele)

    fun pop(): T? = if (elements.isEmpty()) null else elements.removeAt(0)

    override fun toString(): String
            = if (elements.isEmpty()) "[]" else elements.run {
        val stringBuilder = StringBuilder()
        this.joinTo(stringBuilder, ",", "[", "]")
        stringBuilder.toString()
    }
}

fun main(args: Array?) {
    val queue1 = Queue()
    queue1.push("a")
    queue1.push("b")
    queue1.push("c")
    queue1.push("d")
    queue1.push("e")
    // queue1.push(2) // 编译错误
    println(queue1)
    queue1.pop()
    println(queue1)

    println("-------------")

    val queue2 = Queue()
    println(queue2)
}

2019-06-06 17:31:28.582 4014-4014/cn.ak.kot I/System.out: [a,b,c,d,e]
2019-06-06 17:31:28.583 4014-4014/cn.ak.kot I/System.out: [b,c,d,e]
2019-06-06 17:31:28.583 4014-4014/cn.ak.kot I/System.out: -------------
2019-06-06 17:31:28.583 4014-4014/cn.ak.kot I/System.out: []

  泛型类声明时也可以有多个类型参数,类似于泛型函数可以使用不同的字母声明不同的类型参数,多个类型参数直接也是使用逗号 (,) 分隔。泛型声明时也可以使用泛型约束。如下:

class Queue {
    ...
}

多个泛型参数,多个约束

class Test> {
    ...
}

你可能感兴趣的:(Kotlin泛型 (3)泛型类)