java泛型的上界下界
java泛型的上界下界的demo。
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;/*** 泛型上下界*/
public class UpAndDownGeneric {/*** 1、上界可以读取成上界类型Date,但是不能存储,因为这个实际类型有可能是子类,而你指定Date不行,Date的下级也不行,依次同理。*/public void upperBound(List<? extends Date> list, Date date){ Date now = list.get(0); //这里当然也可以用Object接受。System.out.println("now==>" + now); // list.add(date); //这句话无法编译 list.add(null); //这句可以编译,null没有类型信息 }/*** 比如下面这个方法,泛型是Timestamp类型,而add的时Date类型。* 上界读不能存,因为泛型类型可能无限小,任何参数的类型都不能直接使用。*/public void testUpperBound(){ List<Timestamp> list = new ArrayList<Timestamp>(); Date date = new Date(); upperBound(list,date); } /*** 解决,声明List泛型为T,在方法定义T为Date子类,那么传递的类型永远符合T的类型了。就可以添加了。*/public <T extends Date> void upperBound2(List<T> list, T date){ T now = list.get(0); System.out.println("now==>" + now); list.add(date); //这句话无法编译 list.add(null); //这句可以编译,null没有类型信息 }/*** 2、下界不能够读,可以写,因为泛型实际类型都大于Timestamp,所以放心的写,而读的话,不知道返回什么类型了。*/public void lowerBound(List<? super Date> list){ Date now = new Date(System.currentTimeMillis()); list.add(now);list.add(new Timestamp(System.currentTimeMillis())); //可以添加比Date小的类型。//Date time = list.get(0); //需要强转成Object,才能读。} /*** 比如下面这个:list符合泛型限制,但是添加的是一个Object,所以在lowerBound调用时,get要强转成Object.*/public void testLowerBound(){ List<Object> list = new ArrayList<>(); list.add(new Object()); lowerBound(list); }//一句话总结://泛型上界 <? extends 上界类型> 和 泛型下界<? super 下界类型> //如果是进行读取操作,那么就要能够装的下泛型类型的,即看2种泛型的最大类型,其中上界是上界类型,下界是Object。//如果时写入操作,那么就要看泛型类型的最小的具体类型及其子类,所以上界不可写,下界可以写入下界类型及子类。}
java泛型的上界下界相关推荐
- java 上界和下界,Java 泛型之上界下界通配符
Java 泛型之上界下界通配符 Java教程是为JDK 8编写的.本页描述的示例和实践没有利用后续版本中引入的改进. 通配符和子类型 如 泛型,继承和子类型中所述,泛型类或接口仅仅因为它们的类型之间存 ...
- java数组的下界,Java泛型_上界extends_下界super
Java泛型_上界extends_下界super ? 通配符类型 extends T> 表示类型的上界,表示参数化类型的可能是T或是T的子类 super T> 表示类型下界(Java C ...
- java 泛型的上界和下界
1.上界 Java 泛型的上界用于限制泛型类型参数必须是某个类型的子类型,通常使用 extends 关键字来表示.下面是一个示例代码,其中 T 的上界是 Comparable<T>,表示 ...
- java泛型的上界和下界_java泛型中的上界(extend)和下界(super)
泛型中上界和下界的定义 上界 extend Fruit> 下界 super Apple> 上界和下界的特点 上界的list只能get,不能add(确切地说不能add出除null之外的对象, ...
- Java泛型解惑上界通配符和下界通配符
<? extends T>:是指 "上界通配符(Upper Bounds Wildcards)" <? super T>:是指 "下界通配符(Lo ...
- 【Java 泛型】泛型用法 ( 泛型编译期擦除 | 上界通配符 <? extends T> | 下界通配符 <? super T> )
文章目录 一.泛型擦除 二.泛型的上界通配符 <? extends T> 三.泛型的下界通配符 <? super T> 一.泛型擦除 泛型只保留到 编译期 , 在 编译完毕后 ...
- java 泛型中的上界(extend)和下界(super)
1. 泛型中上界和下界的定义 上界 <? extends Fruit> 下界 <? super Apple> 2.上界和下界的特点 上界的list只能get,不能add(确切地 ...
- Java泛型进阶篇: 无界通配符、上界通配符以及下界通配符
专栏文章导航 Java泛型入门篇: 泛型类.泛型接口以及泛型方法 Java泛型进阶篇: 无界通配符.上界通配符以及下界通配符 Java泛型原理篇: 类型擦除以及桥接方法 文章目录 前言 1. 无界通配 ...
- java 上界和下界,Java 泛型上下界(上下限)
UML 类图,A 继承自 Object,B 继承自 A,C 继承自 B public class Test_2 { public static void main(String[] args) { L ...
最新文章
- 快速给shell脚本加上使用提示
- 腾讯AI Lab解析2017 NIPS三大研究方向,启动教授及学生合作项目
- oracle中的柱状图,详解Oracle中XMI开发UML图表技术
- 中点坐标公式 矩形_压轴题必备|中考数学“动点坐标”问题,这个万能解法人人都能学会!...
- 基于TCP的Socket网络编程,有图有代码
- docker安装chirpstack_用docker-compose快速部署ChirpStack
- python数据结构-单链表
- 最新SCI影响因子发布!Nature屠榜,AI领域Top 1000期刊盘点
- c语言实验二实验报告,C语言实验报告(二)
- java判断用户是PC端访问还是手机端访问
- 移动前端开发和web前端开发的区别?
- button触发ajax只进入error,不进入sucess
- 【Docker社区大会】WebAssembly:无需容器的 Docker——VMware技术总监 Daniel Lopez
- ‘function‘ object has no attribute ‘splits‘(Torchtext加载数据集出现的问题)
- 哥德巴赫猜想:任意大于6的偶数都可以被分解成两个素数之和
- The Thirty-fifth Of Word-Day
- java计算机毕业设计精品旅游项目管理系统MyBatis+系统+LW文档+源码+调试部署
- zram disksize 设置
- java毕业设计_租房管理系统
- 一滴泪水能够承载多少的爱?
热门文章
- mysql excel 函数_excel常用函数总结
- 太棒了,Github 上面星标10K+ 的阿里巴巴社招面试感悟!(附海量面试复习资料)
- UE4 GamePlay架构学习篇
- 大数据时代BI平台何去何从
- macOS Big Sur 安装 CH340 串口转 USB 驱动
- Codeforces Round #727 (Div. 2)2021.6.20
- 三菱触摸屏(GS2110)触摸屏经宇电AI-mobdus485通讯转换器与2个宇电70482D7多路温度模块直接通讯实例
- 免校准的电量计量芯片_【应用】基于高精度免校准电能计量芯片CSE7761的漏电保护设计,可支持单芯片两路计量...
- 内容创业赛道分野,2018紧,2019更紧
- python语义分割数据标签,将数字标签转彩色标签