我检查了Java Collection
接口和List
接口的源代码。 Collection
接口中的某些方法,例如int size()
,在List
接口中被重新声明,尽管没有必要作为List extends the Collection
接口。(Java 11)。
答案 0 :(得分:2)
子接口中的方法可能具有与具有完全相同签名的超级接口方法不同的行为(或至少是更具体的行为)。
因此,例如,对于List
界面的用户来说,了解add
将指定的元素添加到此列表的末尾
比add
界面中Collection
的一般描述更具体:
确保此集合包含指定的元素(可选操作)
自Java 8起,还有另一个原因需要在子接口中重新声明方法,这就是default
接口实现。您可以看到Spliterator<E> spliterator()
是在List
,Collection
和Iterable
中定义的,并且在每个接口中它都有不同的默认实现。
我同意您在size()
中重新定义List
的示例意义不大,因为Javadoc实际上与size()
中的Collection
相同。