我注意到我们无法在Java中创建通用类型的数组,如下所示:
public class ExampleClass<G> {
private G[] genericArray = new G[arraySize];
}
我已经读到这是由于Java使用类型擦除来处理泛型的方式所致。我对类型擦除的理解是,泛型仅被最特定的超类容器替换-因此,如果我们不提供绑定,则G
的每个实例都将被Object
替换。
为什么不能使用数组来创建类型为Object
的数组?
答案 0 :(得分:4)
如果允许这样做,并且将G
擦除为Object
,则以下操作将无效:
ExampleClass<String> foo = new ExampleClass<>();
String[] array = foo.genericArray;
因为genericArray
将是Object[]
,而不是String[]
。