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

zer*_*oed 26 java collections hashtable

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

public class LinkedHashSet<E>
    extends HashSet<E>
    implements Set<E>, Cloneable, java.io.Serializable {
Run Code Online (Sandbox Code Playgroud)

问题是:当HashSet已经是Set时,为什么他们需要"extends HashSet"和"implements Set"?

Kev*_*ion 31

我问过Josh Bloch,他告诉我这是一个错误.很久以前,他曾经认为它有一些价值,但他从"看到了光明".很明显,JDK维护人员认为这不值得在以后退出.

  • Josh Bloch ......他写了Collections框架. (13认同)

sep*_*p2k 6

他们不需要明确写作implements Set<E>.他们这样做是为了提高可读性.