- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
AbstractCollection
实现了 Collection
。那么为什么 AbstractCollection
在那里,为什么我们使用 Collection
而不是直接使用 AbstractCollection
?
最佳答案
也许现在回答有点晚了,但以防万一我想回答这个问题。
AbstractCollection
之所以被使用,是因为正如 Krzysztof 所说,所有子集合都共享一些共同的功能,并且由于此功能是通用的(完全相同的代码行),我们可以使用继承来重新组合代码并使设计更简洁、更易于理解和更易于维护。
我们使用接口(interface)是因为接口(interface)定义了每个实现该接口(interface)的类必须提供的“契约”,即子类必须具有的方法。这个问题类似于,为什么我们不能使用 ArrayList
而不是 List,你可以这样做,但是 90% 的时候你会对添加/设置、删除和知道大小感兴趣ArrayList
和 List
接口(interface)向您保证,在新的某处之后编写的任何内容都将实现此方法(和其他方法),因此您可以调用它们,多态性将完成工作.此外,使用接口(interface)作为引用允许您更改具体实现的类型而不更改任何内容(仅新调用)并且还允许您在运行时更改特定类型,使用您限制自己的特定类引用仅供引用。
关于java - AbstractCollection 的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26319130/
AbstractCollection 实现了 Collection。那么为什么 AbstractCollection 在那里,为什么我们使用 Collection 而不是直接使用 AbstractCo
我查看了abstraccollection,发现containsAll方法会迭代整个集合。为什么此方法不检查集合的大小?如果主集合只有一个元素而目标集合有 100000 个元素,性能将会下降。 Arr
这是一 block AbstractCollection类: public boolean addAllm(Collection c) { boolean modified = false;
AbstractCollection 中有一段奇怪的代码: public Object[] toArray() { // Estimate size of array; be prepared
发件人:Collections Framework “AbstractCollection 类提供了所有方法的实现,除了 iterator() 和 size() 方法,它们在适当的子类中实现” 谁能说
public boolean contains(Object o) { Iterator it = iterator(); if (o==null) {
你知道吗: Map m1 = new HashMap(); Map m2 = new HashMap(); System.out.println("m1.equals(m2) = "+m1.equal
当对 AbstractCollection 进行子类化时,我仍然必须实现 size(),即使(我相信)有一个 合理的正确的(尽管性能不佳)默认实现: public int size() { i
public Object[] toArray() { // Estimate size of array; be prepared to see more or fewer elements
public abstract class AbstractCollection implements Collection { public boolean add(E e) {
我想知道为什么要创建 Collections 类。从理论上讲,此类中的方法可以放在 AbstractCollection 类中。那么创建单独的 utils 类的原因是什么? 最佳答案 并非每个系列都扩
AbstractCollection 实现了 Iterable 和 Collection 接口(interface)。但是,Collection 是 Iterable 的子接口(interface)。
Iterable<T> 是Collection(List、Set、Queue)的顶级接口,api释义:实现这个接口允许对象成为 "foreach" 语句的目标。 可
您好,我在 intellij idea 中运行了包含这些说明的代码 SootClass c = Scene.v().loadClassAndSupport(name); final Body b =
这个问题已经有答案了: Why is there a method iterator() on java.util.Collection (4 个回答) 已关闭 9 年前。 当迭代器 iterator
我已经开始使用 C++ 编写代码,来自 Java 背景(实际上我在我的大学学习了 C++,但我们从未接触过 STL 等) 无论如何,我已经到了在各种集合中排列数据的地步,我立即告诉自己“好吧,这是一种
我是一名优秀的程序员,十分优秀!