一、泛型入门
1.1基础概念
Java泛型是JDK 5中引入的一个新特性,它提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这意味着你可以使用一套代码来处理多种不同类型的数据
1.2JDK中自带的泛型类和用法
二、自定义泛型设计
2.1 泛型类

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

2.3泛型方法

2.4泛型接口
三、泛型类型限定

3.1泛型类的继承

3.2上限界定符
上限界定符,Pair<? extends S> 
3.3下限界定

3.4泛型PECS原则
- Producer Extends, Consumer Super
-要从泛型类读取类型T的数据,并且不能写入,可以使用?extends 通配符;(Producer Extends,泛型类是生产者,往外输出东西)
-如果要向泛型类写入类型T的数据,并且不需要读取,可以使用?super 通配符;(Consumer Super,泛型类是消费者,往内增加东西)
-如果既想写入又想读出,那就不用通配符
3.5无限定泛型
四、泛型实现的本质和约束
4.1类型擦除
JDK的版本是向后兼容的即低版本的class文件可以在高版本的JDK上运行
因此,JVM里面没有泛型对象,而是采用类型擦除技术,只有普通的类和方法
4.2无限定的
4.3有限定的
4.4自动转换(自动桥方法)
4.5泛型的约束

五、Java类型协变和逆变
5.1面向对象语言

5.2JAVA数组















![NSS [NUSTCTF 2022 新生赛]Ezjava1](https://img-blog.csdnimg.cn/img_convert/b2e6f2a3111d26a1d8e79ddf19b90b2b.png)









![[C/C++]函数的栈空间(避免栈空间溢出)](https://img-blog.csdnimg.cn/cdb2ef309d7f4cd3a6e4d99918bcb5f5.png)
