为什么Java中的许多集合类扩展了抽象类并实现了接口?
2022-08-31 19:55:54
为什么Java中的许多集合类扩展了抽象类并实现了接口(该接口也由给定的抽象类实现)?
例如,类扩展并同时实现 ,但已经实现了 。HashSet
AbstractSet
Set
AbstractSet
Set
为什么Java中的许多集合类扩展了抽象类并实现了接口(该接口也由给定的抽象类实现)?
例如,类扩展并同时实现 ,但已经实现了 。HashSet
AbstractSet
Set
AbstractSet
Set
这是一种记住这个类真正实现该接口的方法。
它不会产生任何不良影响,并且可以帮助理解代码,而无需经历给定类的完整层次结构。
从类型系统的角度来看,如果类不再次实现接口,则不会有任何不同,因为抽象基类已经实现了它们。
这是千真万确的。
无论如何,他们实现它的原因是(可能)主要是文档:a is-a 。这可以通过添加到末尾来明确,尽管这不是绝对必要的。HashSet
Set
implements Set
请注意,使用反射实际上可以观察到差异,但是如果不直接实现,我很难生成一些会中断的代码。HashSet
Set