- 范型的作用主要是对函数和类构造的输入参数进行类型限制
package com.abc
// 范型
object TDemo {
def main(args: Array[String]): Unit = {
// 1、下限<:
// fun(new A) // 报错
fun(new C) // 正常
// 2、上限>:(所有类都可以)
fun1(new A) // 正常
fun1(new C) // 正常
// 3、协变+
val t:Test[C] = new Test[C](new C)
var t0:Test[B] = t
// 4、逆变-
val t1:Test1[A] = new Test1[A](new A)
val t11:Test1[B] = t1
}
// 限定函数参数类型下限(B以及子类)<:
def fun[T <: B](arg : T): Unit ={
}
// 限定函数参数类型上限(任意类)>:
def fun1[T >: B](arg : T): Unit ={
}
// 限定类构造函数输入类型包含其子类
class Test[+T](arg: T){
}
// 限定类构造函数输入类型包含其父类
class Test1[-T](arg: T){
}
class A{
}
class B extends A{
}
class C extends B{
}
}