美文网首页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 中的特殊符号 ---- 泛型边界 <: >:

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

  • Scala 泛型协变与泛型边界

    代码准备 泛型协变 泛型协变、逆变、不变是指拥有泛型的类在声明和赋值时的对应关系。 协变:声明时泛型是父类,赋值时...

  • 泛型边界

    extends 和 super关键字运用在泛型中,主要作用是限制泛型的边界,确定在泛型方法或者泛型类中可是利用泛型...

  • Scala泛型

    泛型的意思是 泛指某种具体的数据类型 , 在Scala中, 泛型用 [数据类型] 表示. 在实际开发中, 泛...

  • Scala泛型

    泛型类是以类型作为参数,Scala类型参数放在方括号[]中,Java放在<>中 变型 Variance Scala...

  • Scala 类型系统

    1.在scala泛型中获取其 Class[T] 需求:获取一个泛型 T 的 class 类型的 Class[T],...

  • 最强整理:一线互联网移动架构师筑基必备技能之Java篇

    移动架构师筑基必备技能 一、深入Java泛型 泛型的作用与定义通配符与嵌套泛型上下边界RxJava中泛型的使用分析...

  • 泛型不能使用具有继承关系的类型

    使用通配符?可以,但是会使的泛型的类型检查失去意义给泛型加上边界? extend E 给泛型加上上边界

  • 008-自定义泛型,Collections

    自定义泛型 泛型类 代码实现 测试 泛型接口 代码实现 泛型方法 代码演示 测试 泛型上下边界 Collectio...

  • Java泛型中extends和super的理解

    是Java泛型中的“通配符(Wildcards)”和“边界(...

网友评论

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

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