美文网首页Scala
Scala 中的特殊符号 ---- 泛型边界 <: >:

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

作者: 数星星的鱼 | 来源:发表于2019-11-22 16:33 被阅读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 的子类,出错
    
        }
    

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

    相关文章

      网友评论

        本文标题:Scala 中的特殊符号 ---- 泛型边界 <: >:

        本文链接:https://www.haomeiwen.com/subject/xksqwctx.html