Scala

Scala 中的特殊符号 ---- 泛型边界 <: >:

2019-11-22  本文已影响0人  数星星的鱼

泛型的边界 <:>:

符号 <:>:都是用来表示泛型的边界,如:
有以下类声明:

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 的子类,出错

    }

说明: 此例中泛型声明都是 不变 的,所以声明和赋值时类型要一致

上一篇下一篇

猜你喜欢

热点阅读