• Kotlin 范型约束


    官方的示意及其简约,该说的一概没说

    我在这里给大家一个完整的例子

    //test.kt

    fun <T> cloneWhenGreater(list: List<T>, threshold: T): List<T>
      where T:Comparable<T>, T:Cloneable {
        return list.filter{it>threshold}//.map{it.clone()}
      }
    class MySelf(val n:Int) : Cloneable, Comparable<MySelf> {
      val num:Int = n
      override fun clone() : MySelf {
        return MySelf(num)
      }
    override fun compareTo(other:MySelf):Int {
      if (this.num<other.num) {
        return -1
      }
      else if (this.num==other.num) {
        return 0
      }
      else {
        return 1
      }
     }
    }

    fun main(args: Array<String>) {

      val l1 = listOf(MySelf(1), MySelf(18), MySelf(89), MySelf(2), MySelf(13))
      val rl = cloneWhenGreater<MySelf>(l1, MySelf(2))
      println("rl is $rl")

    }

    //结果

    rl is [MySelf@7006c658, MySelf@34033bd0, MySelf@47fd17e3]

    Finally:

    官网上说,我们还不成熟,还不。。。。

    事实上也就是不成熟

    比如这里where子句的语法就是我修正了的,如果你按官网上说的写where T:Comparable, Cloneable去写,那你就等着编译不过吧。哈哈哈

    好了,总得来说还是作为开发者的我们了解的还不太够,否者,很多不成熟都是可以用它已经实现了的部分来更正的啦。

    以后再叙吧,再会!

  • 相关阅读:
    作业十三
    作业十二
    第十一次作业
    编译原理第十次作业
    P3388 【模板】割点(割顶) 题解 (Tarjan)
    BuaacodingT141 microhhh的回城 题解(模拟)
    P2055 [ZJOI2009]假期的宿舍 题解(二分图)
    P2764 最小路径覆盖问题 题解(二分图)
    2019.2-2019.3 TO-DO LIST
    P3369 【模板】普通平衡树 题解(Splay/FHQ)
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7694138.html
Copyright © 2020-2023  润新知