Kotlin泛型 (4)泛型接口

2019-06-10  本文已影响0人  狼性代码人

  自定义泛型接口和自定义泛型类声明方式完全一样。以下是对上一章节泛型类代码的修改,配合使用泛型接口实现队列功能。

interface IQueue<T> {
    fun push(ele: T): Boolean
    fun pop(): T?
}
class Queue<T> : IQueue<T> {
    private val elements: MutableList<T>

    init {
        elements = ArrayList<T>()
    }

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

    override 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<String>?) {
    val queue1 = Queue<String>()
    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<String>()
    println(queue2)
}
上一篇 下一篇

猜你喜欢

热点阅读