gpt4 book ai didi

java - 为什么使用 addAll(Collection) 将元素放入集合中,而通配符扩展通常建议用于 Get?

转载 作者:行者123 更新时间:2023-11-30 06:48:35 24 4
gpt4 key购买 nike

我明白了“? extends E”的意思是可以添加所有包含 E 子类型的任何类型元素的集合成员。因此,对于 List , addAll(List 的所有值) 将保持良好状态。但是,为什么按照 Get 和 Put 原则概括为“当您仅从结构中获取值时使用扩展通配符”呢?

最佳答案

当你 addAll来自参数Collection ,您将“获取” Collection 中的所有元素参数并将它们添加到另一个集合中。因此“生产者扩展(消费者超)”在这里仍然适用。

通过强制执行通用 <? extends E> ,我们确保参数中的所有元素都是 instanceof E ,因此可以成功添加到 Collection<E> .

关于java - 为什么使用 addAll(Collection<? extends E>) 将元素放入集合中,而通配符扩展通常建议用于 Get?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43256861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com