猿问

为什么Java中的数组不能使用类型擦除?

我注意到我们无法在Java中创建通用类型的数组,如下所示:


public class ExampleClass<G> {

  private G[] genericArray = new G[arraySize];

}

我已经读到这是由于Java使用类型擦除来处理泛型的方式所致。我对类型擦除的理解是,泛型仅被最特定的超类容器替换-因此,如果我们不提供限制,则每个的实例都G将替换为Object。


为什么不能通过创建类型为array的数组来完成此操作Object?


慕标5832272
浏览 131回答 1
1回答

慕田峪4524236

如果允许并G删除了Object,则以下操作将无效:ExampleClass<String> foo = new ExampleClass<>();String[] array = foo.genericArray;因为genericArray将是一个Object[],而不是一个String[]。
随时随地看视频慕课网APP

相关分类

Java
我要回答