一、问题导入
需求定义一个名为getMiddleElement的方法,用它来获取输入列表的中间位置上的元素
二、讲授新课
(一)泛型的概念
泛型的定义为:参数化类型,即所有操作的数据类型被指定为一个参数。
在Scala中,用[]表示(在java中使用<>)。
(二)泛型方法
泛型方法指的是:把泛型定义放在方法声明上。即:该方法的参数类型是由泛型来决定的。在调用方法时,明确具体的数据类型。
(三)泛型方法的格式
定义方法: def 方法名泛型名称1,泛型名称2,. . . = { }
调用方法: 方法名类型1,类型2,
如果在参数列表中可以推断出对应的类型,则可以省略方括号[类型1,类型2]
使用泛型方法来解决本课开头提出的问题。
package fx
/**
*
* 两个函数长的一样!!!!只有参数的类型不同。
* 定义一个名为getMiddle的方法,用来获取传入列表中的中间位置上的元素
* 1 2 3 4 5 6 7
*/
object fx01 {
def getMiddle(arr: Array[Int]): Int = {
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(s"arr1的中间元素是:${getMiddle(arr1)}")
val arr2 = Array("a","b","c")
println(s"arr2的中间元素是:${getMiddle(arr2)}")
// val arr3 = Array(1.1,2.2,3.3)
}
}
package fx
object fx02 {
// 泛型类
class Ractangle[X](var w:X, var h:X) {
def getArea(): Unit = {
println(w,h)
}
}
def main(args: Array[String]): Unit = {
val r1 = new Ractangle[Double](1.5,2)
r1.getArea()
}
}