import java.util.ArrayList;
import java.util.Arrays;
/**
* 泛型擦除(Generic erase):
*
* 源代码中使用的泛型,在经过编辑后,代码中就看不到泛型,也就是所谓的泛型擦除
*
* 泛型擦除不是泛型丢失了,而是在编译后的字节码文件中使用单独的标识来存储泛型了。
*
* 为什么会出现泛型擦除,主要是为了编译器的兼容性。
* 因为在jdk5之前是没有泛型的,jdk5之后出现了泛型。
* 为了编译器的兼容性,在编辑代码的时候就将泛型擦除了,这样就和之前没有泛型的时候编译一样了。
* Java代码编译前会进行代码校验。代码能够通过校验,说明代码语法是没有问题的。所以编译的时候可以擦除泛型。
* 比如:
* ArrayList<String> list = new ArrayList<>();
* list.add("java");
* list.add("hello");
* 以上代码可以校验通过,说明集合中的元素一定是符合泛型的类型的,所以此时编译擦除泛型不受影响
* ArrayList list = new ArrayList();
* * list.add("java");
* * list.add("hello");
*
*
*/
public class GenericErasure {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("hello");
System.out.println(list);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
泛型擦除(Generic erase)(教学视频+源代码) 源代码中使用的泛型,在经过编辑后,代码中就看不到泛型,也就是所谓的泛型擦除 泛型擦除不是泛型丢失了,而是在编译后的字节码文件中使用单独的标识来存储泛型了。 为什么会出现泛型擦除,主要是为了编译器的兼容性。 因为在jdk5之前是没有泛型的,jdk5之后出现了泛型。 为了编译器的兼容性,在编辑代码的时候就将泛型擦除了,这样就和之前没有泛型的时候编译一样了。 Java代码编译前会进行代码校验。代码能够通过校验,说明代码语法是没有问题的。所以编译的时候可以擦除泛型。
资源推荐
资源详情
资源评论
收起资源包目录
泛型擦除(Generic erase)(教学视频+源代码).zip (3个子文件)
教学视频
泛型擦除.mp4 69.09MB
源代码
04泛型的擦除
src
GenericErasure.java 1KB
04泛型的擦除.iml 433B
共 3 条
- 1
资源评论
FBIHackerHarry浩
- 粉丝: 3w+
- 资源: 60
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功