Java 泛型擦除
来源:互联网 发布:网络婚姻诈骗 编辑:程序博客网 时间:2024/06/10 08:58
泛型擦除指:在编译器存在泛型类型,由代码指定的类作为该泛型的实际类型,当处于运行期时,该类型将不再存在,所以在运行期内的代码将无法获得泛型的具体类型信息,类型信息仅存在于Class实例中。
同一个泛型在运行时期,具体相同的运行时类,不管他们泛型对应的实际类型是什么,他们的运行时class是相同的。
如:
List<String> l1 = newArrayList<String>();
List<Integer> l2 = newArrayList<Integer>();
System.out.println(l1.getClass() ==l2.getClass());//true
上面的两个list通过getClass获取的类信息是相同的,所以是true.
泛型是通过java编译器的称为擦除(erasure)的前端处理来实现的。你可以(基本上就是)把它认为是一个从源码到源码的转换,它把泛型版本转换成非泛型版本。基本上,擦除去掉了所有的泛型类型信息。所有在尖括号之间的类型信息都被扔掉了,因此,比如说一个List<String>类型被转换为List。所有对类型变量的引用被替换成类型变量的上限(通常是Object)。而且,无论何时结果代码类型不正确,会插入一个到合适类型的转换。
<T> T badCast(T t, Object o) {
return (T) o; // unchecked warning
}
类型参数在运行时并不存在。这意味着它们不会添加任何的时间或者空间上的负担,这很好。不幸的是,这也意味着你不能依靠他们进行类型转换。
- JAVA泛型擦除
- Java泛型擦除
- Java泛型擦除
- Java泛型擦除
- Java泛型擦除
- Java泛型擦除
- JAVA泛型擦除
- Java 泛型擦除
- java--泛型擦除
- java 泛型类型擦除
- Java 泛型的擦除
- JAVA泛型擦除机制
- Java泛型中的擦除
- java泛型类型擦除
- java泛型擦除问题
- java泛型与泛型擦除
- java泛型与类型擦除
- Java泛型与类型擦除
- android 基础知识-开发代号解释
- 文章标题
- javaweb文件下载请求头设置
- Python中的正则表达式教程
- MFC笔记----编辑框加法运算
- Java 泛型擦除
- /usr/bin/ld: cannot find -lmysqlclient解决方法
- 数据结构(线性表子系统:c实现)
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
- PGA内存空间的分配与回收
- PinnedSectionListView原理完全透析
- 人工蜂群算法(二)
- GridView动态设置Item的宽高 第一个Item显示不正常
- Android平台根目录文件