[英]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.