[英]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.