所有集合实现接口(interface) Collection ,这些集合具有特定的抽象层次结构,例如
但是也有类似Collection这样的对应接口(interface), List , Set .这些界面在我看来有点多余。
他们为什么在这里?这只是约定,还是有理由只实现接口(interface)而不扩展抽象类。
最佳答案
接口(interface)之所以存在,是因为能够在不强加实现的情况下将类型分配给变量或参数是件好事。
例如,如果我创建一个持久化实体以在 Hibernate 中使用,并且它有一个集合,我想为其分配一种 List 或 Set 类型。 Hibernate 将用它自己的列表替换我初始化它的任何列表,以及一些特定于 Hibernate 的执行延迟加载的实现或它需要的任何其他内容。 Hibernate 开发人员可能不希望受到必须扩展抽象类的限制。
抽象类的存在是为了方便实现者。该接口(interface)是客户端使用的合约。
关于Java 集合 : Interfaces and Abstract classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730830/