[英]Why methods from Collections were not put in AbstractCollection?
我想知道为什么要创建类Collections
。 理论上,这个类中的方法可以放在AbstractCollection
类中。 那么创建单独的utils类的原因是什么?
AbstractCollection
,这些方法仍然适用于那里。 Collection
,那么确保您总是使用相同的实现,例如unmodifiableCollection
可能会有所帮助。 Set<E> set = new HashSet<>();
在这种情况下,您将无法使用AbstractCollection
中定义的任何不在Collection
。 可能有一段时间你想要实现一个独立的Object,它实现了Collection
接口之一,而没有扩展AbstractCollection。
例如: http : //commons.apache.org/collections/api-release/org/apache/commons/collections/bag/HashBag.html
当JDK人员决定要向Collections类添加更多方法时,他们只需要实现它们。 例如,在1.6中添加了newSetFromMap。 他们无法向Collection接口添加更多方法并保持向后兼容性,因为正如Louis Wasserman所说,并非所有集合都扩展AbstractCollection - 特别是属于Guava,Commons Collections,Hibernate,OpenJPA等的第三方集合。
在具有mixins而不是接口的语言中,这几乎没有问题。 例如,Scala在其集合中拥有大量方法。 事实上,很多人都遇到过Louis Wasserman的第二个难以阅读的问题(在这种情况下是scaladoc)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.