为什么 Java ArrayList 类会返回一个布尔值来表示 add?



我的老师给了我这个类比,用我正在写的方法。 我仍然不明白为什么 add 方法返回布尔值?

它什么都不返回不是更有意义吗?

这来自Collection<E>接口,由于该接口用作各种集合的祖先类,因此返回一个boolean来通知add是否有效地更改了集合是有意义的。

这对于像Set<T>这样的集合很有用,如果添加的元素已经存在于集合中,则不会更改。在List<T>的情况下,Java通过设计强制返回true,所以如果你想通知调用者操作没有成功,你必须找到另一种方法(例如抛出异常)。

这在Collection<E>.add文档中有明确说明:

如果集合出于任何原因拒绝添加特定元素,而不是因为它已经包含该元素,则必须引发异常(而不是返回 false)。这保留了集合在此调用返回后始终包含指定元素的不变性。

基本上,返回的值并不表示失败,但如果成功的添加操作更改了集合。必须通过引发异常来通知任何失败。

Javadoc forArrayList.add(E)解释说它

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

哪个说

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

如果它没有返回boolean,则调用方必须测试List或检查Exception否则将无法判断调用是否成功。我认为返回boolean更容易(也更快)。

简单地说(这就是帮助我理解它的原因)。 您返回的布尔值表示您的add()已成功

考虑一下,如果您没有返回布尔值,您怎么知道您成功添加了某些内容?您必须手动检查以查看您确实添加了某些内容。这是"不必要的",但它很聪明。

相关内容

最新更新