老师,能否问一个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语法,需要强转类型。
第二个例子,属于编译期间,编译器是可以识别泛型的类型的。
00
相似问题