为什么Java中的数组不能使用类型擦除?
我注意到我们无法在Java中创建泛型类型的数组,如下所示:
public class ExampleClass<G> {
private G[] genericArray = new G[arraySize];
}
我已经读到,这是由于Java处理泛型的方式,使用类型擦除。我对类型擦除的理解是,泛型只是被最特定的超类容器所取代——因此,如果我们不提供绑定,那么G
的每个实例都会被Object
所取代
为什么不能用数组来创建Object
类型的数组
# 1 楼答案
如果这是允许的,并且
G
被擦除为Object
,那么以下操作将不起作用:因为
genericArray
将是Object[]
,而不是String[]