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泛型的上界下界相关推荐

  1. java 上界和下界,Java 泛型之上界下界通配符

    Java 泛型之上界下界通配符 Java教程是为JDK 8编写的.本页描述的示例和实践没有利用后续版本中引入的改进. 通配符和子类型 如 泛型,继承和子类型中所述,泛型类或接口仅仅因为它们的类型之间存 ...

  2. java数组的下界,Java泛型_上界extends_下界super

    Java泛型_上界extends_下界super ? 通配符类型 extends T> 表示类型的上界,表示参数化类型的可能是T或是T的子类 super T> 表示类型下界(Java C ...

  3. java 泛型的上界和下界

    1.上界 Java 泛型的上界用于限制泛型类型参数必须是某个类型的子类型,通常使用 extends 关键字来表示.下面是一个示例代码,其中 T 的上界是 Comparable<T>,表示 ...

  4. java泛型的上界和下界_java泛型中的上界(extend)和下界(super)

    泛型中上界和下界的定义 上界 extend Fruit> 下界 super Apple> 上界和下界的特点 上界的list只能get,不能add(确切地说不能add出除null之外的对象, ...

  5. Java泛型解惑上界通配符和下界通配符

    <? extends T>:是指 "上界通配符(Upper Bounds Wildcards)" <? super T>:是指 "下界通配符(Lo ...

  6. 【Java 泛型】泛型用法 ( 泛型编译期擦除 | 上界通配符 <? extends T> | 下界通配符 <? super T> )

    文章目录 一.泛型擦除 二.泛型的上界通配符 <? extends T> 三.泛型的下界通配符 <? super T> 一.泛型擦除 泛型只保留到 编译期 , 在 编译完毕后 ...

  7. java 泛型中的上界(extend)和下界(super)

    1. 泛型中上界和下界的定义 上界 <? extends Fruit> 下界 <? super Apple> 2.上界和下界的特点 上界的list只能get,不能add(确切地 ...

  8. Java泛型进阶篇: 无界通配符、上界通配符以及下界通配符

    专栏文章导航 Java泛型入门篇: 泛型类.泛型接口以及泛型方法 Java泛型进阶篇: 无界通配符.上界通配符以及下界通配符 Java泛型原理篇: 类型擦除以及桥接方法 文章目录 前言 1. 无界通配 ...

  9. java 上界和下界,Java 泛型上下界(上下限)

    UML 类图,A 继承自 Object,B 继承自 A,C 继承自 B public class Test_2 { public static void main(String[] args) { L ...

最新文章

  1. 快速给shell脚本加上使用提示
  2. 腾讯AI Lab解析2017 NIPS三大研究方向,启动教授及学生合作项目
  3. oracle中的柱状图,详解Oracle中XMI开发UML图表技术
  4. 中点坐标公式 矩形_压轴题必备|中考数学“动点坐标”问题,这个万能解法人人都能学会!...
  5. 基于TCP的Socket网络编程,有图有代码
  6. docker安装chirpstack_用docker-compose快速部署ChirpStack
  7. python数据结构-单链表
  8. 最新SCI影响因子发布!Nature屠榜,AI领域Top 1000期刊盘点
  9. c语言实验二实验报告,C语言实验报告(二)
  10. java判断用户是PC端访问还是手机端访问
  11. 移动前端开发和web前端开发的区别?
  12. button触发ajax只进入error,不进入sucess
  13. 【Docker社区大会】WebAssembly:无需容器的 Docker——VMware技术总监 Daniel Lopez
  14. ‘function‘ object has no attribute ‘splits‘(Torchtext加载数据集出现的问题)
  15. 哥德巴赫猜想:任意大于6的偶数都可以被分解成两个素数之和
  16. The Thirty-fifth Of Word-Day
  17. java计算机毕业设计精品旅游项目管理系统MyBatis+系统+LW文档+源码+调试部署
  18. zram disksize 设置
  19. java毕业设计_租房管理系统
  20. 一滴泪水能够承载多少的爱?

热门文章

  1. mysql excel 函数_excel常用函数总结
  2. 太棒了,Github 上面星标10K+ 的阿里巴巴社招面试感悟!(附海量面试复习资料)
  3. UE4 GamePlay架构学习篇
  4. 大数据时代BI平台何去何从
  5. macOS Big Sur 安装 CH340 串口转 USB 驱动
  6. Codeforces Round #727 (Div. 2)2021.6.20
  7. 三菱触摸屏(GS2110)触摸屏经宇电AI-mobdus485通讯转换器与2个宇电70482D7多路温度模块直接通讯实例
  8. 免校准的电量计量芯片_【应用】基于高精度免校准电能计量芯片CSE7761的漏电保护设计,可支持单芯片两路计量...
  9. 内容创业赛道分野,2018紧,2019更紧
  10. python语义分割数据标签,将数字标签转彩色标签