对泛型上下限(协变,逆变)理解的拙见
首先要了解一下以下几点:
子类是对父类的扩展,拥有比父类更多的内容,类似包裹关系。
接收类型的继承关系级别要大于等于该类,也就是说只有其父类和本身能正常接收,否则需要强制转型。
子类转型成父类,会让父类涌入很多新东西,包括重写的。而父类转型成子类,子类本就有了父类的所有内容(包括私有,只是不能使用),认为没得鸟用不推荐,则需要强制转型。
转型后调用父类有的方法会优先调用子类中重写过的(说白了就是以子类为主,子类也有隐藏了的没有重写的父类方法)。
<? extends A>:
A或继承自A的子类都能适应进去,而A的级别最大。
只知道最大级别是A和适应进去都是A或A的派生类,再存其他的会有其他的新内容,子类内容会越来越多是无法控制的,适应进去后不能再添加其他派生类,只能有这一系列类,可取值。
取值时,来接收的对象继承级别得是最大或已知最大的,因为不确定里面级别最大的是哪个类。如用Object或A接收。
<? super A>
A或A的父类能适应进去,A的级别最小。
A的级别最小,适应进去的父类其实内容是越来越小的且类的内容在A里都有(方法名,属性名等都知道),能添加其他父类,能取值。
取值时,不知道已知的最大父类,只能用Object对象来接收。
可能有些表述不清,如有矛盾,还请多多纠正。
对泛型上下限(协变,逆变)理解的拙见相关推荐
- 泛型型协变逆变_Java泛型类型简介:协变和逆变
泛型型协变逆变 by Fabian Terh 由Fabian Terh Java泛型类型简介:协变和逆变 (An introduction to generic types in Java: cova ...
- 10天学会kotlin DAY7 接口 泛型 协变 逆变
kotlin 接口 泛型 协变 逆变 前言 1.接口的定义 2.抽象类 3.定义泛型类 4.泛型函数 5.泛型变换 6.泛型类型约束 7.vararg 关键字(动态参数) 8.[] 操作符 9.out ...
- 12:设计模式、泛型、上下界、视图界定、上下文界定、协变逆变不变
经典的 WordCount 的讲解 示例代码如下: package com.atguigu.chapter14.homework.wordcount/*val lines = List("a ...
- 大数据技术之_16_Scala学习_12_设计模式+泛型、上下界、视图界定、上下文界定、协变逆变不变
大数据技术之_16_Scala学习_12 第十七章 设计模式 17.1 学习设计模式的必要性 17.2 掌握设计模式的层次 17.3 设计模式的介绍 17.4 设计模式的类型 17.5 简单工厂模式( ...
- 协变逆变java_Java中的逆变与协变
什么是逆变与协变 协变(Covariance) 如果B是A的子类,并且F(B)也是F(A)的子类,那么F即为协变 逆变(Contravariance) 如果B是A的子类,并且F(B)成了F(A)的父类 ...
- C#泛谈 —— 变体(协变/逆变)
有如下四个类. public class Animal{}public class Mammal : Animal{}public class Dog : Mammal{public void Eat ...
- 协变逆变java_Java中的协变与逆变
Java作为面向对象的典型语言,相比于C++而言,对类的继承和派生有着更简洁的设计(比如单根继承). 在继承派生的过程中,是符合Liskov替换原则(LSP)的.LSP总结起来,就一句话: 所有引用基 ...
- Scala语言学习笔记——泛型、上下界、视图界定、上下文界定、协变逆变不变、闭包、柯里化
1.Scala泛型 应用案例1 /*** @author huleikai* @create 2019-05-27 11:23*/ object TestFanXing {def main(args: ...
- 第五节:泛型(泛型类、接口、方法、委托、泛型约束、泛型缓存、逆变和协变)
一. 泛型诞生的背景 在介绍背景之前,先来看一个案例,要求:分别输出实体model1.model2.model3的id和name值,这三个实体有相同的属性名字id和name. 1 public cla ...
最新文章
- python发明者叫什么-近 50 年来最具影响力的 10 种编程语言,都是谁发明的?
- Linux Kernel5.10的核间通信(SGI中断)的本质
- eclipse导入项目后,项目上有红叉,但是打开项目并没有发现带有红叉的文件【解决方案】
- MFC添加自定义消息及重写消息过程
- js 数组添加n次相同元素_数组中两次出现相同元素之间的最大距离
- 澳门大学健康科学学院生物信息核心实验中心高薪诚聘研究助理
- 【英语学习】【Daily English】U07 Restaurant L01 What's a seafood paella, though?
- 关于命令行启动MySQL服务的相关问题
- pyspider爬取tripadvisor
- xp系统安装金蝶k3服务器配置,XP单机版安装金蝶K3的13.1版本号,金蝶K3Wise安装步骤,安装成功...
- kux-mp4转码Python3脚本
- sonic 架构学习
- 微信小程序之点点考勤经验总结
- QT图形显示和处理1
- 服务器如何安装虚拟声卡,虚拟声卡安装方法和使用【图文教程】
- 基于Python大数据的的新能源汽车推荐系统的设计与实现
- Archive for the 'TED' Category TED视频:Tan Le 能读懂脑电波的耳机
- 关于360旗下Atlas运维记事
- 【性能】perf + 火焰图分析软件性能瓶颈
- 【软件构造】面向正确性和健壮性的软件构造小记
热门文章
- vue按钮字体大小设置_用Vue模仿antd的样式造UI组件之button
- python urllib2 (转)
- java交易撮合怎么实现_撮合交易系统服务边界与设计
- 高中物理:浅谈含电容的单杆模型与双杆模型的“等效“
- 机器人 零境交错吧_电击文库零境交错角色大全 最强角色选择推荐及属性数据汇总[多图]...
- PPT基础(四十五)调整图片透明度
- 华为路由器时间同步_华为NTP配置实例
- 15分钟内制作自己的文本编辑器:Yandex的实践
- verilog写的一个简洁实用的PWM模块
- 收藏,全网开发者都在学的26门AI课程!