java入坑之泛型

一、泛型入门

1.1基础概念

Java泛型是JDK 5中引入的一个新特性,它提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型

java入坑之泛型_第1张图片

java入坑之泛型_第2张图片

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这意味着你可以使用一套代码来处理多种不同类型的数据

1.2JDK中自带的泛型类和用法

java入坑之泛型_第3张图片

二、自定义泛型设计

2.1 泛型类

java入坑之泛型_第4张图片

ArrayList,E表示元素Element;
HashMap, ,K表示Key,V表示Value;
自定义泛型变量常用T,T表示Template。

 2.2泛型类的调用

java入坑之泛型_第5张图片 2.3泛型方法

java入坑之泛型_第6张图片

2.4泛型接口

java入坑之泛型_第7张图片

三、泛型类型限定

java入坑之泛型_第8张图片

3.1泛型类的继承 

java入坑之泛型_第9张图片

3.2上限界定符

上限界定符,Pair java入坑之泛型_第10张图片

java入坑之泛型_第11张图片 3.3下限界定java入坑之泛型_第12张图片

java入坑之泛型_第13张图片

3.4泛型PECS原则

- Producer Extends, Consumer Super


-要从泛型类读取类型T的数据,并且不能写入,可以使用?extends 通配符;(Producer Extends,泛型类是生产者,往外输出东西)


-如果要向泛型类写入类型T的数据,并且不需要读取,可以使用?super 通配符;(Consumer Super,泛型类是消费者,往内增加东西)


-如果既想写入又想读出,那就不用通配符

3.5无限定泛型

java入坑之泛型_第14张图片

四、泛型实现的本质和约束

4.1类型擦除

JDK的版本是向后兼容的即低版本的class文件可以在高版本的JDK上运行
因此,JVM里面没有泛型对象,而是采用类型擦除技术,只有普通的类和方法

4.2无限定的

java入坑之泛型_第15张图片 4.3有限定的java入坑之泛型_第16张图片

4.4自动转换(自动桥方法)

java入坑之泛型_第17张图片 4.5泛型的约束

java入坑之泛型_第18张图片

五、Java类型协变和逆变 

5.1面向对象语言

java入坑之泛型_第19张图片

java入坑之泛型_第20张图片 5.2JAVA数组

java入坑之泛型_第21张图片

5.3java泛型

java入坑之泛型_第22张图片

5.4复合java入坑之泛型_第23张图片 

你可能感兴趣的:(java,开发语言)