[英]Why are the Unmodifiable collections protected to the Collections package?
我无法理解为什么Java希望隐藏不可变的,不可修改的集合,以免被传递出去。
这使开发人员的工作更加困难,因为您不能保证类返回的是不可修改的不可变内容 ,从而迫使您将对Collections.unmodifiable的调用分散到整个代码中。 这既浪费又烦人。
是否有我为什么要保护这些方法的原因,还是我缺少另一个包含不可变和/或不可修改集合的公共版本的库?
为了更多地了解Java,假设Scala不算是“包含不可变集合的公共版本的库”的答案:)
Collections
接口允许包装一个退出的Collection
这样对mutator方法的调用会导致失败。
“ unmodifiableCollection(Collection c) :”返回指定集合的不可修改视图。
这使开发人员的生活更加艰苦,因为您不能保证一个类返回的是不可变的东西,这既浪费又烦人。
Collections.unmodifiableList()
方法的JDK源是:
public static <T> List<T> unmodifiableList(List<? extends T> list) {
return (list instanceof RandomAccess ?
new UnmodifiableRandomAccessList<>(list) :
new UnmodifiableList<>(list));
}
我知道为什么这可以被认为是浪费的(这些泛型也使它变得难看)。 该方法为什么不检查传递的实例是否已经是UnmodifiableRandomAccessList
或UnmodifiableList
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.