为什么方法 Queue#add() 有布尔返回值



我修改了关于Queue的知识。我看着Queue界面。

方法 add 具有以下声明:

boolean add(E e);
在java文档中

,文档写道:

 * @return <tt>true</tt> (as specified by {@link Collection#add})

因此,此方法只能返回 true!!为什么此方法不返回声明为 void 的值?

此方法声明对我来说已经足够混乱了。

如果您查看Collection#add的文档,就会变得很清楚:

true此集合是否由于调用而更改

由于队列总是会因调用而更改,因此Queue#add始终必须返回 true 。(并且它必须具有返回值,以便正确实现接口。

Set 进行比较,它也实现了 Collection ,它只会在元素尚未在集合中时才添加元素,因此可能会从 add 返回false

>Queue实现了Collection这是一个更通用的接口。在 java 中,如果不包含最初声明的所有方法,就无法实现或扩展接口,因此,有时,在这种情况下,您会获得带有存根方法的类add

集合添加方法声明为:

boolean add(E e)

所以必须在Queue宣布.在列表中,鉴于队列数据结构的性质,其返回值将始终为 true,但对于其他结构则不然。

假设您正在开发一种新的数据结构,实现Collection接口,该接口在内部使用数组来存储其元素。在这种情况下,您可能会发现在添加新元素时返回false很有用:您可能已经使用了所有数组位置。

方法 java.util.Queue.add(E( 覆盖方法 java.util.Collection.add(E(。因此,它必须遵循方法覆盖的规则。

此规则之一是方法 java.util.Queue.add(E( 的

返回类型必须是方法 java.util.Collection.add(E( 的子类型。因为方法java.util.Collection.add(E(返回一个布尔值,所以方法java.util.Queue.add(E(也必须返回一个布尔值。

java.util.Queue.add(E( 方法是布尔值 true,因为每次我们向队列添加新对象时,队列都会更改。

最新更新