Scala从入门到精通07之泛型

1. 协变和逆变

1.1. 语法

class MyList[+T]{ //协变
} 
class MyList[-T]{ //逆变
}
class MyList[T] //不变

1.2. 说明

  • 协变:Son 是 Father 的子类,则 MyList[Son] 也作为 MyList[Father]的“子类”
  • 逆变:Son 是 Father 的子类,则 MyList[Son]作为 MyList[Father]的“父类”
  • 不变:Son 是 Father 的子类,则 MyList[Father]与 MyList[Son]“无父子关系”

2. 泛型上下限

2.1. 语法

Class PersonList[T <: Person]{ //泛型上限
}
Class PersonList[T >: Person]{ //泛型下限
}

2.2. 说明

泛型的上下限的作用是对传入的泛型进行限定


3. 上下文限定

3.1. 语法

def f[A : B](a: A) = println(a) //等同于 def f[A](a:A)(implicit arg:B[A])=println(a)

3.2. 说明

上下文限定是将泛型和隐式转换的结合产物,以下两者功能相同,使用上下文限定[A : Ordering]之后,方法内无法使用隐式参数名调用隐式参数,需要通过 implicitly[Ordering[A]]获取隐式变量,如果此时无法查找到对应类型的隐式变量,会发生出错误


你可能感兴趣的:(大数据,scala,java,big,data,scala泛型,scala学习)