Collection c=new ArrayList();    
ArrayList a=new ArrayList();
两种定义有什么区别?第一种定义有什么好处?

解决方案 »

  1. 返回的结果都是一样的 没什么好处 
    坏处是有的 你在使用ArrayList相对于Collection扩展的功能的时候 不得不把c强制转换成ArrayList另外
    Collection是List和Set两个接口的基接口 
    List在Collection之上增加了"有序" 
    Set在Collection之上增加了"唯一" 而ArrayList是实现List的类...所以他是有序的. 
    它里边存放的元素在排列上存在一定的先后顺序 而且ArrayList是采用数组存放元素 
    另一种List LinkedList采用的则是链表
      

  2. 第一种就是所谓的“针对接口/超类型编程”而第二种就是“针对实现编程”。在变层的时候,我们支持第一种方法。
    这个声明Collection c在运行的时候不必关心到底是什么类型的,更灵活一些。
      

  3. 接口越广越好。。方便拓展
      当你要把ArrayList换成list的时候 而以前得代码不需要改。
     我是这样理解的。 呵呵。
      

类似问题 »