1、概述
Scala和Java或C++一样,类和特质可以带类型参数。在Scala中,我们用方括号来定义类型参数,例如
class Pair[T,S](val first:T,val second:S)
以上将定义一个带有两个类型参数T和S的类。在类的定义中,你可以用类型参数来定义变量、方法参数,以及返回值的类型。
带有一个或者多个类型参数的类是泛型的。如果你把类型参数替换成实际的类型,将得到一个普通的类,比如Pair[Int,String]。
Scala 会从构造参数推断出实际类型,这让我们很省心
//这是一个Pair[Int,String]
val p = new Pair(42,”Hello Scala”)
我们还可以自己指定类型
val p2 = new Pair[Any,Any](42,”Hello Scala”)
2、实操
类和特质都可以带类型参数,用方括号来定义类型参数,可以用类型参数来定义变量、方法参数和返回值。带有一个或多个类型参数的类是泛型。如下p1,如果实例化时没有指定泛型类型,则scala会自动根据构造参数的类型自动推断泛型的具体类型。
泛型擦除后,Type保存类型,类型擦除后,是可以找到的
class Pair1[T, S](val first: T, val second: S) {
override def toString = "(" + first + "," + second + ")"
}
class MainPair1{
def main(args: Array[String]): Unit = {
//从构造参数推断类型
val p1 = new Pair(42, "String")
//val p3 = new Pair[Int,String](42, "String")
//设置类型
val p2 = new Pair[Any, Any](42, "String")
}
}