为什么LinkedHashSet<E>扩展HashSet<e>并实现Set<E>

2022-09-01 15:35:07

今天打开了LinkedHashSet源代码,发现了一些有趣的事情:

public class LinkedHashSet<E>
    extends HashSet<E>
    implements Set<E>, Cloneable, java.io.Serializable {

问题是:当HashSet已经是Set时,为什么它们需要“扩展HashSet”和“实现Set”?


答案 1

我问过乔什·布洛赫,他告诉我这是一个错误。很久以前,他曾经认为其中有一些价值,但他后来“看到了光明”。显然,JDK维护者并不认为这值得以后退出。


答案 2

他们不需要显式编写 。他们这样做是为了提高可读性。implements Set<E>