JAVA 泛型机制原理,泛型擦除机制

JAVA 泛型机制原理,泛型擦除机制

  • 泛型的原理:
    Java泛型是jdk5引入的一种机制。为了向下兼容,所以Java虚拟机是不支持泛型的,也就是说Java泛型是一种伪泛型机制。

  • 泛型的擦除机制:
    伪泛型机制就是说:在编译期间把泛型的信息全部擦除掉了,所以的泛型最终都变成了最原始的类型(Object);在运行期就不存在泛型的信息。

  • 编译器怎么擦除泛型的?

    1. 检查泛型的类型,获取目标泛型
    2. 擦除类型变量,并替换为限定类型
      a. 如果没有指定类型变量(),则用Object为原始类型
      b.如果限定类型变量(),则用A作为原始类型
      c.如果有多个限定类型(<T extends A & B & C >),则用第一个边界A作为原始类型
    3. 必要时插入类型转换以保持类型安全
    4. 生成桥方法用在扩展的时候保持多态性
  • 泛型的副作用?

    1. 使用泛型后,不能使用基本数据类型(byte,short,int ,long,float,double,boolean,char);
      a. 原因:因为擦除后变成Object,而Object无法存放int类型
    2. 不能使用 instanceof运算符
      a. 原因:因为擦除后只剩下原始类型,泛型信息不存在。
    3. 泛型在静态方法和静态类使用问题
      a. 泛型静态参数创建时候报错:泛型的静态参数在创建的时候就要确定参数
      b.泛型静态方法创建成功:方法在调用的时候在确定泛型类型
    4. 泛型类型中方法冲突
      a.比如equals方法:泛型擦除后变成了Object,object方法有equals方法,相当于重新定义equals方法

题外话:谢谢大家观看,有不足之处欢迎大家一起讨论;码字不易,大家喜欢,麻烦点赞哦。


灵魂三问:

  • 有没有觉得技术得不到系统的提升,技术成长慢?
  • 有没面试懵逼,升职加薪难?
  • 有没有想过去大一点的世界看看?

有期望JAVA技术巩固的、Android知识进阶的、期望升职加薪的、Android面试技巧的大厂面试真题的;大家可以加我QQ哦:1070800492。我们一起学习,一起进步!

重要的事情说三遍:

  • 学习、挣钱、自由
  • 学习、挣钱、自由
  • 学习、挣钱、自由

疫情当下,唯有自强

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章