getMiddle方法与泛型类

48 阅读1分钟

两个函数长得一样!!! 只有参数的类型不同。

把类型当做参数,在调用的时候传入

定义一个名为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()
}