为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕标5832272 2021-04-05 12:09:37
我注意到我们无法在Java中创建通用类型的数组,如下所示:public class ExampleClass<G> {  private G[] genericArray = new G[arraySize];}我已经读到这是由于Java使用类型擦除来处理泛型的方式所致。我对类型擦除的理解是,泛型仅被最特定的超类容器替换-因此,如果我们不提供限制,则每个的实例都G将替换为Object。为什么不能通过创建类型为array的数组来完成此操作Object?
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

如果允许并G删除了Object,则以下操作将无效:


ExampleClass<String> foo = new ExampleClass<>();

String[] array = foo.genericArray;

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


查看完整回答
反对 回复 2021-04-14
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信