泛型的边界 <:
和 >:
符号 <:
和>:
都是用来表示泛型的边界,如:
有以下类声明:
class Animal
class Dog extends Animal
class ErHa extends Dog
声明拥有泛型的类:
class MyList[V <: Dog]
说明: 泛型 V 必须是 Dog 类或者是 Dog 类的子类,即泛型的上边界为 Dog 类
class MyList2[V >: Dog]
说明: 泛型 V 必须是 Dog 类或者是 Dog 类的父类,即泛型的下边界为 Dog 类
示例代码
class Animal
class Dog extends Animal
class ErHa extends Dog
class MyList[V <: Dog] // 泛型 V 是 Dog 或者是 Dog 的子类
class MyList2[V >: Dog] // 泛型 V 是 Dog 或者是 Dog 的父类
def main(args: Array[String]): Unit = {
val m1: MyList[Animal] = new MyList[Animal]() // Animal 是 Dog 的父类,出错
val m2: MyList[Dog] = new MyList[Dog]()
val m3: MyList[ErHa] = new MyList[ErHa]()
val m4: MyList2[Animal] = new MyList2[Animal]()
val m5: MyList2[Dog] = new MyList2[Dog]()
val m6: MyList2[ErHa] = new MyList2[ErHa]() // ErHa 是 Dog 的子类,出错
}
说明: 此例中泛型声明都是 不变 的,所以声明和赋值时类型要一致
网友评论