两个函数长得一样!!! 只有参数的类型不同。
把类型当做参数,在调用的时候传入
定义一个名为getMiddle方法,用来获取输入列表中的中间位置上的元素
def getMiddle[T](arr: Array[T]): T = {
arr[(arr.length/2)]
}
// def getMiddle(arr: Array[String]): String = {
// arr[(arr.length/2)]
// }
def main(args: Array[String]): Unit = {
val arr1 = Array[1,2,3,4,5,6,7]
println("arr1中的元素是: ${getMiddle[Int](arr1)}")
val arr2 = Array["a","b","c"]
println("arr2中的元素是: ${getMiddle[String](arr2)}")
val arr3 = Array[1.1,2.2,3.3]
println("arr3中的元素是: ${getMiddle[Double](arr3)}")
}
泛型的概念
泛型的定义为:参数化类型,即所有操作的数据类型被指定为一个参数。
在Scala中,用[]表示(在java中使用<>)。
泛型类:
泛型类指的是:把泛型定义放在类的声明上。即:该类中的参数类型是由泛型来决定的。在创建对象的时候,再来明确具体的数据类型。
格式:class 类[T](val 变量:T)
来从一个具体的需求出发来看看泛型类的使用。
需求:定义一个Pair泛型类,该类包含两个字段,且两个字段的类型不固定。创建不同类型的Pair泛型类对象,并打印
// 泛型类
class Rectangle<T>(var w: T, var h: T) {
def getArea(): Unit = {
println(w, h)
}
}
def main(args: Array[String]): Unit = {
val r1 = new Rectangle[Double](1.5, 2)
r1.getArea()
}