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

泛型的边界 <:>:

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

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

    }

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容