第二十章 泛型

多态的泛化机制:

  1. 将方法的参数类型设为基类;
  2. 方法以接口而不是类作为参数;
  3. 使用泛型;

泛型实现了参数化类型

简单泛型

Java 泛型的核心概念:你只需告诉编译器要使用什么类型,剩下的细节交给它来处理。

钻石写法:

GenericHolder<Bob> h3 = new GenericHolder<>();

一个元组类库

元组,是将一组对象直接打包存储于其中的一个单一对象。

一个堆栈类

public class LinkedStack<T> {private static class Node<U> {U item;Node<U> next;Node() {item = null;next = null;}Node(U item, Node<U> next) {this.item = item;this.next = next;}boolean end() {return item == null && next == null;}}private Node<T> top = new Node<>(); // End sentinelpublic void push(T item) {top = new Node<>(item, top);}public T pop() {T result = top.item;if (!top.end())top = top.next;return result;}public static void main(String[] args) {LinkedStack<String> lss = new LinkedStack<>();for (String s : "Phasers on stun!".split(" "))lss.push(s);String s;while ((s = lss.pop()) != null)System.out.println(s);}
}

RandomList

public class RandomList<T> extends ArrayList<T> {private Random rand = new Random(47);public T select() {return get(rand.nextInt(size()));}public static void main(String[] args) {RandomList<String> rs = new RandomList<>();Arrays.stream(("The quick brown fox jumped over " + "the lazy brown dog").split(" ")).forEach(rs::add);IntStream.range(0, 11).forEach(i -> System.out.print(rs.select() + " "));}
}

泛型接口

Java 泛型的一个局限性:基本类型无法作为类型参数。

泛型方法

复杂模型构建

泛型擦除

补偿擦除

边界

通配符

问题

自我约束类型

动态类型安全

泛型异常

混入

潜在类型

补偿不足

辅助潜在类型

泛型的优劣

转载于:https://www.cnblogs.com/huangwenjie/p/11560235.html

20190920 On Java8 第二十章 泛型相关推荐

  1. 鸟哥的Linux私房菜(服务器)- 第二十章、WWW 伺服器

    第二十章.WWW 伺服器 最近更新日期:2011/08/05 我們最常講的『架站』其實就是架設一個 Web 網站啦!那麼什麼是 Web 呢?那就是全球資訊廣播的意思 (World Wide Web), ...

  2. 数字图像处理:第二十章 视频编码与压缩

    第二十章 视频编码与压缩 目录 1.    引言 2.    有运动补偿的预测编码 3.    运动估计算法 作业 1. 引言 视频信号具有巨大的数据量,例如:在不做任何压缩的条件下,对于NTSC视频 ...

  3. 鸟哥的Linux私房菜(基础篇)- 第二十章、启动流程、模块管理与 Loader

    第二十章.启动流程.模块管理与 Loader 最近升级日期:2009/09/14 系统启动其实是一项非常复杂的程序,因为核心得要侦测硬件并加载适当的驱动程序后,接下来则必须要呼叫程序来准备好系统运行的 ...

  4. activiti高亮显示图片_【正点原子FPGA连载】第二十章SD卡读BMP图片HDMI显示实验领航者 ZYNQ 之嵌入式开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  5. 修改dts后重编译_「正点原子FPGA连载」第二十章另一种方式编译ZYNQ镜像

    1)摘自[正点原子]领航者 ZYNQ 之linux驱动开发指南 2)实验平台:正点原子领航者ZYNQ开发板 3)平台购买地址:https://item.taobao.com/item.htm?& ...

  6. 《Reids 设计与实现》第二十章 监视器

    <Reids 设计与实现>第二十章 监视器 文章目录 <Reids 设计与实现>第二十章 监视器 一.简介 二.成为监视器 三.向监视器发送命令信息 四.重点回顾 一.简介 通 ...

  7. 【Java数据结构与算法】第二十章 Dijkstra算法和Floyd算法

    第二十章 Dijkstra算法和Floyd算法 文章目录 第二十章 Dijkstra算法和Floyd算法 一.Dijkstra算法 1.介绍 2.代码实现 二.Floyd算法 1.介绍 2.代码实现 ...

  8. 羊皮卷的实践-第二十章

    第二十章 你可以在任何一个星期一开始填写你的成功记录表.一旦开始,就不能中断,除非严重的疾病. 还有一个例外.如果在你执行这项计划的过程中,碰巧有一次休假,那么尽管让自己去享受假日的轻松.然后,一旦假 ...

  9. 【正点原子Linux连载】第二十章 V4L2摄像头应用编程-摘自【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.1

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

最新文章

  1. python学习笔记(开课介绍1)
  2. 科研人员的办公室是怎样的?
  3. MT7628/MT7688 修改串口2作为调试串口 所踩的坑
  4. JS数组去重方法记录
  5. 牛客网【每日一题】4月13号 Accumulation Degree
  6. 【软件测试】软件测试分类详述
  7. VRRP协议与keepalived原理及功能实例演示
  8. 程序员面试金典——9.4集合的子集
  9. Poj1469_匈牙利算法_最大二分匹配
  10. java 高级调试_多种高级debug方法,帮你更快定位问题
  11. 计算机和机械交叉学科会议期刊,机器视觉相关的研究团队
  12. Android pk8/x509生成keystore
  13. Rhadoop集群搭建
  14. Virtualbox主机与虚拟机相互访问
  15. npm WARN deprecated
  16. 打印机登录无密码计算机,无密码,引发共享打印机拒绝访问故障
  17. html制作钢铁侠心脏,钢铁侠胸部的“心脏”并非特效,那是怎么放进身体的?...
  18. 哪家python培训最好
  19. 移动前端自适应适配布局解决方案和比较
  20. Hololens官方教程精简版 - 08. Sharing holograms(共享全息影像)

热门文章

  1. thread.sleep会释放锁吗_面试 LockSupport.park()会释放锁资源吗?
  2. 孙鑫-MFC笔记四--文本编程
  3. php composer 框架,用 Composer 组建了个 PHP 框架
  4. Ubuntu ROS Kinect2安装
  5. openresty入门 方法及指令
  6. Windows核心编程_窗口蒙版效果
  7. Asp.Net Core Mvc上Json序列化首字母大小写的问题
  8. 21套非常棒的网页设计图标素材
  9. node + express + sockio 在线聊天室
  10. [LeetCode]41.First Missing Positive