例如,在 Jsoup 中,他们定义了一个类 Elements 来收集元素。
通常定义一个类 A 和包含很多 A(s) 的 As。但为什么?为什么我们不直接使用 ArrayList 或其他东西?
最佳答案
JSoup 中的Elements
类有许多特定的方法来实现它的功能,例如
toggleClass(String className)
html()
这在 ArrayList 上不可用。我想 ArrayList
可以扩展,但是 Elements
的作者已经开始进行组合了。 Elements
有一个 ArrayList
实例,它保持私有(private)。 Elements
公开了 List 接口(interface)的方法、定制方法和其他方法。
但是 Elements
由 ArrayList 支持 - 这样作者也可以装饰他选择通过自己的类公开的 ArrayList 的方法。这是源代码的摘录:
private List<Element> contents;
public Elements() {
contents = new ArrayList<Element>();
}
顺便说一句:您曾经看到 Java 5 之前的包装器为 Java Collections
提供类型安全,但是自从 Java 5 泛型已经停止了很多这样的事情。
关于java - 为什么有些库会定义自己的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5952465/