梦想还是要有的,万一忘了咋办?

0%

collection的mistake

最近阅读集合源码发现一个问题,collection 下面的对象总有父类实现某接口子类再次实现次接口。

1
2
3
4
5
6
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> ;

public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable;

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

原因猜测

  • 可读性
  • 添加Map接口声明是为了Class类的getInterfaces这个方法能够直接获取到Map接口;
  • 可维护性

结论


[当初作者的一个错误](https://stackoverflow.com/questions/2165204/why-does-linkedhashsete-extend-hashsete-and-implement-sete)