首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Java不允许创建泛型数组?

为什么Java不允许创建泛型数组?
EN

Stack Overflow用户
提问于 2010-06-07 20:13:39
回答 4查看 1.6K关注 0票数 19

试图创建这样一组泛型的人对于堆栈溢出有很多疑问:

代码语言:javascript
复制
ArrayList<Foo>[] poo = new ArrayList<Foo>[5];

当然,答案是Java规范不允许您声明一个泛型数组。

然而,我的问题是为什么是?在java语言或java中,这种限制背后的技术原因是什么?这是我一直想知道的技术上的好奇心。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-07 20:16:00

数组被具体化--它们在运行时保留类型信息。

泛型是一个编译时构造--类型信息在运行时丢失。这是一个故意允许向后兼容前泛型Java字节码的决定。其结果是您无法创建泛型类型的数组,因为当VM想要创建数组时,它将不知道使用哪种类型。

票数 13
EN

Stack Overflow用户

发布于 2010-06-07 20:18:12

有效Java,项目25

票数 5
EN

Stack Overflow用户

发布于 2010-06-07 20:34:45

这是我写的一篇旧博文,我在这里解释了这个问题:Java泛型怪癖

请参阅Angelika的Java中的如何一般地创建对象和数组?以获得解决方法(您可以使用反射来完成它)。FAQ包含了您想知道的关于Java泛型的所有内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2992786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档