Kotlin泛型 (4)泛型接口

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

  • 声明泛型接口 IQueue
interface IQueue {
    fun push(ele: T): Boolean
    fun pop(): T?
}
  • 声明类 Queue 实现泛型接口 IQueue
class Queue : IQueue {
    private val elements: MutableList

    init {
        elements = ArrayList()
    }

    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()
    }
}
  • 验证队列 Queue 的逻辑正确性
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)
}

你可能感兴趣的:(Kotlin泛型 (4)泛型接口)