Java集合:接口和抽象类

jel*_*ion 3 java collections

所有集合实现接口集合,这些集合具有特定的抽象层次结构,例如

但也有相应的接口,如Collection,List,Set.这些界面在我看来有点多余.

他们为什么在这里?是仅仅是约定还是有理由只实现接口而不扩展抽象类.

Nat*_*hes 7

接口就在那里,因为能够在不强加实现的情况下将类型分配给变量或参数是很好的.

例如,如果我创建一个在Hibernate中使用的持久化实体,并且它有一组东西,我想为它分配一种List或Set类型.Hibernate会将我初始化它的任何列表换成自己的,使用一些特定于Hibernate的实现来执行延迟加载或其他任何需要它的东西.Hibernate开发人员可能不希望受到必须扩展抽象类的约束.

抽象类的存在是为了实现者的便利.接口是客户使用的合同.

  • @Jellification:接口是api设计者想要提交的绝对最小值,以便为客户端提供有用的东西.抽象类提供了实现者可能觉得有用但不强制使用的常用功能. (2认同)