资讯专栏INFORMATION COLUMN

Java 协变、逆变与不变

hufeng / 737人阅读

摘要:是协变的,当时,成立如数组,当然,泛型也可以通过通配符来实现协变与逆变是逆变的,当时,成立是不变的,当时上述两个式子均不成立,即与相互之间没有继承关系。

逆变 协变 用来 描述类型转换(type transformation)后的继承 关系,其定义:如果 X、Y 表示类型,f(⋅) 表示类型转换,≤ 表示继承关系(比如,A≤B 表示 A 是由 B 派生出来的子类)。

f(⋅) 是协变(Covariant)的,当 X≤Y 时,f(X)≤f(Y) 成立;如数组,当然,泛型也可以通过通配符(extends、super)来实现协变与逆变

f(⋅) 是逆变(Contravariant)的,当 X≤Y 时,f(Y)≤f(X) 成立

f(⋅) 是不变(Invariant)的,当 X≤Y 时上述两个式子均不成立,即 f(X) 与 f(Y) 相互之间没有继承关系。如泛型

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66779.html

相关文章

  • 第5章:可复用性的软件构建方法 5.2面向复用的构造

    摘要:代码使用泛型类中不依赖于类型参数的方法。委托依赖于动态绑定,因为它要求给定的方法调用可以在运行时调用不同的代码段。委托捕获操作并将其发送给另一个对象。委托可以被看作是在对象层次上的复用机制,而继承是类层次上的复用机制。 大纲 设计可复用的类 继承和重写 重载(Overloading) 参数多态和泛型编程 行为子类型与Liskov替换原则 组合与委托 设计可复用库与框架 API和库...

    DevTalking 评论0 收藏0
  • 函数范式入门(什么是函数式编程)

    摘要:第一节函数式范式什么是函数式编程函数式编程英语或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。 第一节 函数式范式 1. 什么是函数式编程 函数式编程(英语:functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对...

    StonePanda 评论0 收藏0
  • 栈和队列 - Algorithms, Part I, week 2 STACKS AND QUEUE

    摘要:在改进前使用数组的一个缺点是必须声明数组的大小,所以栈有确定的容量。待解决的问题建立一个能够增长或者缩短到任意大小的栈。下边的图是观察时间开销的另一种方式,表示了入栈操作需要访问数组的次数。 前言 上一篇:算法分析下一篇:基本排序 本篇内容主要是栈,队列 (和包)的基本数据类型和数据结构文章里头所有的对数函数都是以 2 为底关于性能分析,可能还是需要一些数学知识,有时间可以回一下在很多...

    Stardustsky 评论0 收藏0
  • Java 泛型总结(三):通配符的使用

    简介 前两篇文章介绍了泛型的基本用法、类型擦除以及泛型数组。在泛型的使用中,还有个重要的东西叫通配符,本文介绍通配符的使用。 这个系列的另外两篇文章: Java 泛型总结(一):基本用法与类型擦除 Java 泛型总结(二):泛型与数组 数组的协变 在了解通配符之前,先来了解一下数组。Java 中的数组是协变的,什么意思?看下面的例子: class Fruit {} class Apple ex...

    itvincent 评论0 收藏0
  • 关于AD/DC变换器的几个问题

    摘要:电池变流器或电池逆变器的功能,应用领域是哪些电池逆变器是一种特殊的逆变器,由电池作为其电源,配合其中的电池充电器为电池充电,若有过多的电力,会回灌到交流电源端。 1、逆变器的概念:有源逆变和无源逆变的区别是什么?         当交流侧接在点网上,即交流侧接有电源时,称为有源逆变;当交流侧...

    DoINsiSt 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<