scala 泛型

泛型的说明:泛型类指可以接受类型参数的类,泛型类在集合类中被广泛使用
与Java不同,定义泛型类使用“[]”

泛型方法

import scala.collection.mutable.ListBuffer

class MyTt {
  //泛型方法
  def abc[T](t:T)={
    val list1:ListBuffer[T]=ListBuffer[T]()
    list1
  }
}

object Test{
  def main(args: Array[String]): Unit = {
    val tt = new MyTt
    //当传的是String类型时ListBuffer就是String类型
    val res = tt.abc("ss")
    println(res.isInstanceOf[ListBuffer[String]])//true
  }
}

当泛型定义在方法上时就是泛型方法

泛型类

//泛型类
class MyTt1[T]{
  def abc(t:T)={
    println(t.isInstanceOf[String])
  }
}
object Test1{
  def main(args: Array[String]): Unit = {
    val tt = new MyTt1[Int]
    val tt1 = new MyTt1[String]
    //只能传Int类型的数值
    tt.abc(2)//false
    //只能传String类型的数值
    tt1.abc("ss")//true
  }
}

上界与下界

scala中上界
在 scala 里表示某个类型是 A 类型的子类型,也称上界或上限,使用 <: 关键字,语法如下:
[T <: A]

scala中下界
在 scala 的下界或下限,使用 >: 关键字,语法如下:
[T >: A]
class Father { def read()={}}
class Son extends Father{}

class MyTt2{
  //T是Father的类或子类,上界是Father
  def abc[T<:Father](t:T)={
    println("成功")
  }

  //下界可以传入任意类型,没什么意义
  def abcd[T>:Object](t:T)={
    println("成功1")
  }
}
object Mytest{
  def main(args: Array[String]): Unit = {
    val tt = new MyTt2
    tt.abc(new Father)
    tt.abcd(new Father)
  }
}

你可能感兴趣的:(Scala,scala)