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