栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何正确使用泛型类型的数组?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何正确使用泛型类型的数组?

Java不允许通用数组。Java Generics
FAQ
中的更多信息。

要回答您的问题,只需使用List(可能是ArrayList)而不是数组。

可以在Java理论和实践中找到更多解释:泛型陷阱:

泛型不是协变的

尽管您可能会认为将集合视为数组的抽象很有帮助,但它们具有一些集合没有的特殊属性。Java语言中的数组是协变的-
这意味着,如果Integer扩展Number(它可以这样做),则不仅是

Integer
Number,而且a
Integer[]
也是a
Number[]
,您可以自由传递或分配
Integer[]
a
Number[]
,对于。(更正式,如果
Number
是的超类型
Integer
,则
Number[]
是一个超类型
Integer[]
。)你可能会认为,同样是通用的类型以及真正的-这
List<Number>

是一个超
List<Integer>
,并且您可以通过一个
List<Integer>

其中
List<Number>
的预期。不幸的是,它不能那样工作。

事实证明,这样做有一个很好的理由:这样做会破坏安全性泛型应该提供的类型。假设您可以将分配

List<Integer>
List<Number>
。然后,以下代码将使您可以将非的内容
Integer
放入
List<Integer>

List<Integer> li = new ArrayList<Integer>();List<Number> ln = li; // illegalln.add(new Float(3.1415));

因为ln是a

List<Number>
,所以添加a
Float
似乎是完全合法的。但是,如果ln用li别名,那么它将破坏li定义中隐含的类型安全保证-它是整数列表,这就是为什么泛型不能协变的原因。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453205.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号