老师,能否问一个java中泛型擦除的问题

来源:12-12 概念的抽象

CoffeePlayer

2020-06-23

java中的泛型是伪泛型,在运行时,任何具体的类型信息都被擦出了。
图片描述如上输出的结果为
图片描述在《java编程思想》这本书中, 对于这一结果的解释为: 即使type被存储为Class,擦除也意味着它实际将被存储为Class,没有任何参数,因此当你在使用它时,例如在创建数组时,Array.newInstance()实际上并未拥有type所蕴含的类型信息,因此不会产生具体的结果,所以必须转型。

但是在这本书前面介绍泛型方法的时候,也有一个例子如下
图片描述图片描述上面却可以通过 type创建对象,并没有受泛型擦除的影响,我想问一下老师这是怎么回事?

这个问题和本课程没有任何关系,想了很久也没明白,才冒昧的问一下老师, 希望老师在百忙之中能回答一下,非常感谢!

写回答

1回答

悟空

2020-06-24

第一个我理解是因为Array.newInstance()的返回类型就是Object,而不是T,根据Java语法,需要强转类型。

第二个例子,属于编译期间,编译器是可以识别泛型的类型的。

0
0

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 940 问题

查看课程