Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过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