JAVA 泛型机制原理,泛型擦除机制
JAVA 泛型机制原理,泛型擦除机制
-
泛型的原理: Java泛型是jdk5引入的一种机制。为了向下兼容,所以Java虚拟机是不支持泛型的,也就是说Java泛型是一种伪泛型机制。 泛型的擦除机制: 伪泛型机制就是说:在编译期间把泛型的信息全部擦除掉了,所以的泛型最终都变成了最原始的类型(Object);在运行期就不存在泛型的信息。 编译器怎么擦除泛型的? 检查泛型的类型,获取目标泛型 擦除类型变量,并替换为限定类型 a. 如果没有指定类型变量(),则用Object为原始类型 b.如果限定类型变量(),则用A作为原始类型 c.如果有多个限定类型(<T extends A & B & C >),则用第一个边界A作为原始类型 必要时插入类型转换以保持类型安全 生成桥方法用在扩展的时候保持多态性 泛型的副作用? 使用泛型后,不能使用基本数据类型(byte,short,int ,long,float,double,boolean,char); a. 原因:因为擦除后变成Object,而Object无法存放int类型 不能使用 instanceof运算符 a. 原因:因为擦除后只剩下原始类型,泛型信息不存在。 泛型在静态方法和静态类使用问题 a. 泛型静态参数创建时候报错:泛型的静态参数在创建的时候就要确定参数 b.泛型静态方法创建成功:方法在调用的时候在确定泛型类型 泛型类型中方法冲突 a.比如equals方法:泛型擦除后变成了Object,object方法有equals方法,相当于重新定义equals方法
灵魂三问:
-
有没有觉得技术得不到系统的提升,技术成长慢? 有没面试懵逼,升职加薪难? 有没有想过去大一点的世界看看?
重要的事情说三遍:
-
学习、挣钱、自由 学习、挣钱、自由 学习、挣钱、自由
疫情当下,唯有自强
上一篇:
Java基础知识总结(2021版)
下一篇:
面试: SpringIOC你怎么理解的?