金三银四精选java面试题-什么是Java中的泛型擦除?

发布时间:2023-12-12 13:49:31
 

什么是Java中的泛型擦除?

JDK1.5及1.5之前都是没有泛型的概念的,JDK1.5之后引入了泛型的概念并为了与之前的JDK版本兼容,所以引入了泛型擦除的概念。

 

 

 

以下两个类型是相等的,表面泛型被擦除了,都是ArrayList

 

以下API,只能拿到泛型的个数,不能拿到具体的泛型类型

 

 

通过放射可以往List添加不同类型的元素,因为类型其实被擦除了,变成了Object

 

 

 

泛型虽然被擦除了,但是具体的泛型信息还是被保存在了字节码中

 

所以还是有一些方式可以很方便的获取到泛型的真实类型的

 

另外,对于JVM,如果对每个泛型类型都生成不同的目标代码,假如现在有10个不同泛型的List,就要生成10份字节码,这样会造成不仅造成代码膨胀,而且一份字节码对应一个Class对象,占据大量的内存。


 
上一篇 金三银四精选java面试题-在Java的异常处理机制中,什么时候应该抛出异常,什么时候捕获异常?
下一篇 金三银四精选java面试题-Java中有哪些类加载器

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题