我检查了java Collection接口和List接口的源代码。Collection接口中的一些方法,例如int size(),在List接口中被重新声明,尽管它不一定是List extends the Collection接口(Java11)。
发布于 2019-01-22 18:26:41
子接口中的方法可以具有与具有完全相同签名的超级接口的方法不同的行为(或至少更具体的行为)。
因此,例如,对于List接口的用户来说,知道add是非常有用的
将指定的元素追加到此列表的末尾
这比Collection接口中对add的一般描述更具体:
确保此集合包含指定的元素(可选操作)
自Java8以来,在子接口中重新声明方法还有另一个原因,那就是default接口实现。您可以看到,Spliterator<E> spliterator()是在List、Collection和Iterable中定义的,并且在每个接口中都有不同的默认实现。
我同意您在List中重新定义size()的例子意义不大,因为Javadoc实际上与size()中的Collection完全相同。
https://stackoverflow.com/questions/54306105
复制相似问题