Scala 类型界定

Posted 进无止境

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala 类型界定相关的知识,希望对你有一定的参考价值。

 

 

class User(val userName: String,val age: Int) extends Comparable[User] {
  override def compareTo(o: User): Int = this.age - o.age
}


object OrderingDemo extends App {

  /**
    * 类型界定,上界
    *
    * @param u1
    * @param u2
    * @tparam T T必须是Comparable[T]的子类
    * @return
    */
  def compare[T <: Comparable[T]](u1: T, u2: T): Int = { 

    if (u1.compareTo(u2) == 0) 0 else if (u1.compareTo(u2) > 0) 1 else -1

  }


  val u1 = new User("u1", 18)
  val u2 = new User("u2", 19)

  //  compare(u1,u2) //class User(userName: String, age: Int)的话,编译不通过

  println(compare(u1,u2)) //class User(val userName: String,val age: Int) extends Comparable[User]


}

 

以上是关于Scala 类型界定的主要内容,如果未能解决你的问题,请参考以下文章

Scala 上下文界定

Scala之类型参数和对象

第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析

Scala入门到精通——第二十节 类型參数

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

Scala零基础教学61-80