Mor*_*Adi 5 java oop collections jvm interface
我在很多地方甚至在Java核心本身看到,尽管在父类中实现了一个接口,但子类明确地实现了相同的接口.
作为一个例子,这是一个AbstractSet实现Set 的定义
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E>
Run Code Online (Sandbox Code Playgroud)
和HashSet扩展AbstractSet.
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable
Run Code Online (Sandbox Code Playgroud)
我们为什么要再次明确实施Set?再次LinkedHashSet延伸相同的模式HashSet.
public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable
Run Code Online (Sandbox Code Playgroud)
LinkedHashSet延伸Hashset,
HashSet农具Set<E>,Cloneable,java.io.Serializable
LinkedHashSet隐式实现所有接口,其父级扩展.那么为什么呢?我试图搞清楚,但我找不到背后的原因.即使是为了可读性,为什么不明确地实现Collection?
如果删除这个不必要的implements关键字,它的可读性更强 有谁知道这背后的原因?
我在SOF上看到了一些关于这个的问题,但我不相信这是为了更好的可读性,如果这也是为什么不实现Collection接口呢?