我一直看到集合数据结构被实例化为子实例并由它们的父接口声明。例如。
Set<E> collection1 = new HashSet<E>();
Map<E> collection1 = new HashMap<E>();
这背后的原因是什么。子类将继承所有方法,并且 Java 文档中从子类中提到的所有方法都被覆盖但具有相同的含义。那么声明它们的原因是它们的父接口。
任何投入都将极大地帮助我增强我的基础知识。
编辑
感谢您的反馈意见。我明白了。但在改变
Set<E> collection1 = new HashSet<E>();
至
Set<E> collection1 = new LinkedHashSet<E>();
我们将失去对原始 HashSet 的引用,因为我们正在为引用集声明一个新的 LinkedHashSet。那么这样做有什么意义呢?如果有任何方法可以将旧实现转换为新实现而不会丢失数据,那么这将是有意义的。