繁体   English   中英

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

[英]Why doesn't type erasure work with arrays in Java?

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

public class ExampleClass<G> {
  private G[] genericArray = new G[arraySize];
}

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

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

如果允许这样做,并且G被擦除为Object ,那么以下操作将无效:

ExampleClass<String> foo = new ExampleClass<>();
String[] array = foo.genericArray;

因为genericArray将是一个Object[] ,而不是String[]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM