gpt4 book ai didi

java - 为什么 ArrayList 添加方法的返回类型不同?

转载 作者:行者123 更新时间:2023-12-01 06:51:53 27 4
gpt4 key购买 nike

为什么 ArrayList.add(E e) 中的返回类型不同和 ArrayList.add(int index, E element)
有人可以好心地解释一下吗?因为今天我收到了如下错误..

public void Foo(List<String> list) {
// do something
}
..........

并从我的测试类中调用此方法 Foo(new ArrayList<String>().add("John"));我的 IDE 中出现编译错误。所以,我注意到ArrayList.add(E e)方法不是void返回类型。如果是这样,我不知道为什么这个方法返回 boolean 类型。

PS: I thought ArrayList.add(E e) method has void method for so long time before.

感谢您阅读我的问题。

最佳答案

您的链接有答案。多加注意!

返回 true(由 Collection.add(E) 指定)

来自 Collection.add(E):

如果此集合因调用而更改,则返回 true

另外(感谢 Mark Rotteveel):

“如果集合由于除已包含该元素以外的任何原因拒绝添加特定元素,则它必须抛出异常(而不是返回 false)。这保留了集合始终包含指定元素之后的不变量。该调用返回。”

因此,如果它返回 true,则该元素已添加,如果它返回 false,则该元素已经存在(例如在 Set 中) ),在其他情况下需要抛出异常(例如,如果 Collection 会限制其大小而不是阻塞)。

造成差异的原因是 add(E) 的约定是在 Collection 中定义的,而 add(int index, E e)List 接口(interface)中定义(不需要返回任何内容)。它也可以返回true,但它没有用。另一个方法必须返回true,因为否则它会破坏Collection的约定。

关于java - 为什么 ArrayList 添加方法的返回类型不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23805942/

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