scala的泛型(二)

3 阅读1分钟

(五)泛型类

泛型类指的是:把泛型定义放在类的声明上。即:该类中的参数类型是由泛型来决定的。在创建对象的时候,再来明确具体的数据类型。

格式:

class [ T ](val 变量:T)

来从一个具体的需求出发来看看泛型类的使用。

需求:定义一个Pair泛型类,该类包含两个字段,且两个字段的类型不固定。创建不同类型的Pair泛型类对象,并打印

object fx03 {

  // 泛型类
  // 类内部的数据类型不确定,所以用泛型

  class Pair[T](var a:T,var b:T)
  
  def main(args: Array[String]): Unit = {
    val p1 = new Pair(1,2)
    println(p1.a)
    println(p1.b)

    val p2 = new Pair(1.1,2.2) // 省略类型double ,他可以自己推测出来
    println(p2.a)
    println(p2.b)
  }
}

结果:

1
2
1.1
2.2

泛型类的步骤格式:先写一个普通的类 -> 把参数的类型(或者返回值的类型,或者内部属性成员的类型)改成泛型名 -> 在类名的后面添加[泛型]

(六)泛型特质

泛型特质指的是:把泛型定义放在trait的声明上。即:该特质中的参数类型是由泛型来决定的。在定义特质的子类或者子单例对象时,明确具体的数据类型。

格式

trait 特质A[T] {}

class B extends 特质A[指定的数据类型] {}

需求:

1、定义泛型特质Logger,该特质有一个变量a和show方法,他们都是用Logger特质的泛型。

2、定义单例对象ConsoleLogger,继承Logger特质