我想知道为什么要创建课程Collections
。理论上,这个类的方法可以放在课程AbstractCollection
中。那么创建单独的utils类的原因是什么?
答案 0 :(得分:3)
AbstractCollection
,这些方法仍然适用于那里。Collection
,请确保您始终使用相同的实施例,例如unmodifiableCollection
可以提供帮助。Set<E> set = new HashSet<>();
在这种情况下,您将无法使用{{中定义的任何方法1}}不在AbstractCollection
。答案 1 :(得分:2)
您可能希望实现一个独立的Object,它实现Collection
接口之一,而不扩展AbstractCollection。
例如:http://commons.apache.org/collections/api-release/org/apache/commons/collections/bag/HashBag.html
答案 2 :(得分:0)
当JDK人员决定要向Collections类添加更多方法时,他们只需要实现它们。例如,在1.6中添加了newSetFromMap。他们无法向Collection接口添加更多方法并保持向后兼容性,因为正如Louis Wasserman所说,并非所有集合都扩展AbstractCollection - 特别是属于Guava,Commons Collections,Hibernate,OpenJPA等的第三方集合。
在具有mixins而非接口的语言中,这并不是一个大问题。例如,Scala在其集合中拥有大量方法。事实上,很多人都遇到过Louis Wasserman的第二个难以阅读的问题(在这种情况下是scaladoc)。