Java 为什么方法队列#add()具有布尔返回值?

Java 为什么方法队列#add()具有布尔返回值?,java,collections,queue,Java,Collections,Queue,我修改了关于队列的知识。我观察队列界面 方法add具有以下声明: boolean add(E e); 在java文档中,写入以下内容: * @return <tt>true</tt> (as specified by {@link Collection#add}) *@return true(由{@link Collection#add}指定) 因此此方法只能返回true!!!为什么此方法不返回声明为void的值 这个方法声明对我来说已经够混乱的了。队列实现了集合

我修改了关于队列的知识。我观察
队列
界面

方法
add
具有以下声明:

boolean add(E e);
在java文档中,写入以下内容:

 * @return <tt>true</tt> (as specified by {@link Collection#add})
*@return true(由{@link Collection#add}指定)
因此此方法只能返回true!!!为什么此方法不返回声明为
void
的值


这个方法声明对我来说已经够混乱的了。

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

集合声明为:

boolean add(E e)
因此,它必须在
队列中声明。在列表中,由于队列数据结构的性质,其返回值将始终为真,但对于其他数据结构,则不为真


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

如果您查看文档,就会清楚:

true
如果此集合因调用而更改

由于队列总是随着调用而改变,
queue#add
总是必须返回
true
。(为了正确实现接口,它必须有一个返回值。)


与相比,它还实现了
Collection
,它只会在元素不在集合中时添加元素,因此可能会从
add
返回
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,因为每次我们向队列中添加新对象时,队列都会发生更改。

总是返回
true
的方法有什么令人困惑的地方?只需忽略返回值:-)