当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选java面试题-什么是Java中的泛型擦除?

金三银四精选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对象,占据大量的内存。