我知道界面是什么以及什么是集合。但说实话,我找不到任何可靠的理由,为什么不在一个类中实现两个集合接口。
几天前在接受采访时问了这个问题。
答案 0 :(得分:2)
在某些情况下,它们是或可以由同一个对象实现。
Queue和List都是由LinkedList实现的,TreeMap是NavigableMap和SortedMap。还有其他一些例子。
每个描述集合的特征或特征(作为使用它的方式公开)。
这一切都没有意义。对于Java集合来实现两个接口,它必须是两者的近乎完美的实现(也许这是你的答案)。
链接列表COULD技术上实现了ArrayList的方法,但这是一个非常糟糕的主意。
答案 1 :(得分:1)
首先,不兼容的方法合同:例如List.add
必须始终返回true
,如果元素已经存在,则Set.add
必须始终返回false
。
答案 2 :(得分:1)
尚未提出的另一点是,您不能使用不同的类型参数两次实现相同的接口。
因此,如果您尝试将类实现为List<String>
和Collection<Integer>
,则会出现编译器错误。这是因为List<String>
扩展了Collection<String>
,因此我们尝试使用不同的类型参数实施Collection
两次。
如果您确实设法同时实现了两个集合接口,那么它必须类似于LinkedList
示例(当您将其视为List
时,泛型类型是相同的你认为它是Deque
)。