源码分析

1.CollectionHelper 对List,Set,Map 包装出不可修改的
public   final   class  CollectionHelper {
    
public   static   final  List EMPTY_LIST  =  Collections.unmodifiableList(  new  ArrayList( 0 ) );
    
public   static   final  Collection EMPTY_COLLECTION  =  Collections.unmodifiableCollection(  new  ArrayList( 0 ) );
    
public   static   final  Map EMPTY_MAP  =  Collections.unmodifiableMap(  new  HashMap( 0 ) );
    
private  CollectionHelper() {}
}
    1.1 在Collections.unmodifiableList(...)是静态内部类个构造方法
       悟: 从上面看出是一个非常好的  适配器  
   //1.Collections 中 new 出内部类
    public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) {
        return new UnmodifiableCollection<T>(c);
    }



    //2.
内部类 也继承 Collection
    static class UnmodifiableCollection<E> implements Collection<E>, Serializable {
    private   static   final   long  serialVersionUID  =   1820017752578914078L ;

    
final  Collection <?   extends  E >  c;
    //3.很好适配 Collection 通过他把 add remove 等功能 封装
    UnmodifiableCollection(Collection
<?   extends  E >  c) {
            
if  (c == null )
                
throw   new  NullPointerException();
            
this .c  =  c;
        }
    ...............

2.大量使用内部类枚矩 ?如:
Mappings.PropertyReference upr  =  (Mappings.PropertyReference) iter.next();
////////////////////////////////////////////////
Mappings中
    
static   final   class  PropertyReference  implements  Serializable {
        String referencedClass;
        String propertyName;
        
boolean  unique;
    }

//感觉是可以更好的代码编写



你可能感兴趣的:(源码分析)