List contentIdList = new ArrayList();
 ArrayList contentIdList = new ArrayList();
 List contentIdList=null上面三中定义的区别在那里?

解决方案 »

  1.   

    List contentIdList = new ArrayList(); //定义一个接口的引用,实际指向一个接口的实现类
                                            的对象  
                                            
                                            通过 contentIdList  只能调用接口中的方法,不能
                                            调用 ArrayList中的扩充的方法                                        最常用的定义方式ArrayList contentIdList = new ArrayList(); //就是定义一个ArrayList 引用,并创建一个 
                                                ArrayList 的对象,没有上面的定义的限制
                                                但可移植差,不推荐List contentIdList=null                  //定义一个引用,没有指向任何实际的对象,
                                               还需要赋值后才能调用方法,不然有空指针异常另外,第一种就相当于,下面的组合写法List contentIdList=null ;
    contentIdList = new ArrayList();
      

  2.   

    上楼的讲的很清楚了了
    Collection
    ├List
    │├LinkedList
    │├ArrayList
    │└Vector
    │ └Stack
    └Set
      

  3.   

    (a)List contentIdList = new ArrayList();
    (b)ArrayList contentIdList = new ArrayList();
    (c)List contentIdList=null
    //////////////////////////
    java中推崇面向接口编程,也就是说构造具体类的实例的话,要用具体类的构造函数,但是返回给消费客户端应该返回抽象类实例或者接口类实例;(a)满足这个原则,(b)不满足这个原则;(c)只是声明了一个引用,这个引用将指向List型的对象。