为什么Java ArrayList类返回一个布尔值来添加?

Ros*_*ine 3 java arraylist

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

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

Jac*_*ack 8

这来自Collection<E>接口,因为接口被用作各种集合的祖先类,boolean如果add有效地改变了集合,返回一个通知是有意义的.

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

Collection<E>.add文档中明确说明了这一点:

如果一个集合因为已经包含该元素的原因而拒绝添加特定元素,那么它必须抛出异常(而不是返回false).这保留了在此调用返回后集合始终包含指定元素的不变量.

基本上,返回的值不表示失败,但是如果成功的添加操作改变了集合.必须通过抛出异常来通知任何失败.