Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
6年前关闭。
让我解释一下,我一直在读(令人难以置信的)有关使您的收藏集不可修改的内容,请看一下encapsulate collections,这是一个有趣的想法,但是我无法想象它的实际情况。
有人可以解释它的实际应用吗?
示例2:
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
6年前关闭。
让我解释一下,我一直在读(令人难以置信的)有关使您的收藏集不可修改的内容,请看一下encapsulate collections,这是一个有趣的想法,但是我无法想象它的实际情况。
有人可以解释它的实际应用吗?
最佳答案
它具有两个主要优点:
在编码时,您可以创建一个只读的集合类而无需创建一个子类,但是您可以对每种类型的集合使用一个通用的只读包装器(可重用性)
在运行时中,您可以创建现有集合的只读视图,而无需将整个集合复制到只读实现中(这通常很昂贵)
当您要防止类用户修改自己的内部集合时,后者通常很有用。
如今,composition over inheritance也被认为是很好的设计,很适合这种模式。
示例1:
class myComplicatedCollection<T> implements Collection<T> {
// Code goes here
// O no, I still have to deal with the read-only use-case.
// Instead of duplicating almost all of my code or using inheritance I'll use this handy-dandy wrapper
public Collection<T> readonlyVersion() {
return Collections.unmodifiableCollection(this);
}
}
示例2:
class myClass {
private Collection<T> theData;
// Users need to access the data,
// but we don't want them modifying the private data of this class
public Collection<T> getTheData() {
return Collections.unmodifiableCollection(theData);
}
}
关于java - 此方法Collections.unmodifiableList是否有用? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18785931/
10-12 00:25