zoukankan      html  css  js  c++  java
  • JAVA 泛型之类型擦除

    ★ 泛型是 JDK 1.5 版本引进的概念,之前是没有泛型的概念的,但泛型代码能够很好地和之前版本的代码很好地兼容。

    CollectionTest.java ---编译成CollectionTest.class ----JVM中运行

    因为泛型信息只存在于代码编译阶段,编译器编译完带有泛形的java程序后,生成的class文件中与泛型相关的信息会被擦除掉,以此使程序运行效率不受到影响,这个过程叫做类型擦除,也就是说泛型类和普通类在 java 虚拟机内是一样的。

    List<String> strLis = new ArrayList<String>();
    
    List<Integer> intLis = new ArrayList<Integer>();
    
    System.out.println(strLis.getClass() == intLis.getClass());//true

    泛型类List<String>和List<Integer>经过编译被类型擦除后类型均为java.util.ArrayList

    思考:由于编译生成的字节码会丢掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其它类型的数据(反射中的知识点)。

    在JDK 1.5中, 你还可以按原来的方式将各种不同类型的数据装到一个集合中,但编译器会报告unchecked警告。

  • 相关阅读:
    【Teradata】DSA服务器tdactivemq重启清理消息队列步骤
    什么是5G
    【时序数据库】十分钟系列
    16_Android的数据存储_ SharedPreference、XML和JSON
    15_Android文件读写操作
    14_TTS
    13_拍照、录像和音频
    12_Sensor简单实例
    11_SurfaceView绘图
    10_多点触摸交互处理
  • 原文地址:https://www.cnblogs.com/huanghuanghui/p/10161436.html
Copyright © 2011-2022 走看看