可否举例说明,这么写的好处。为什么不写ArrayList array = new ArrayList();举例说明,谢谢楼下地。

解决方案 »

  1.   

    ArrayList array = new ArrayList();可以写啊。
    List只是接口。List array = new ArrayList(); 会把ArrayList有而List没有的
    方法过滤掉。比如ArrayList array = new ArrayList();中array 有ensureCapacity
    方法而List array = new ArrayList();中array没有
      

  2.   

    ArrayList array = new ArrayList();这种写法更好List list=new ArrayList();也是可以接受的
      

  3.   

    ArrayList array = new ArrayList();这种写法更好List list=new ArrayList();也是可以接受的/////////////////////
    颠倒了;赫赫,能发现高手也有疏忽时,是一种乐事。
      

  4.   

    List list=new ArrayList();你在别的地方引用这个返回值用List就可以了;如果你将来把ArrayList改为Vector;直接修改定义处即可以,不需要修改调用处;相反,如果写在一个方法内部,也不作为返回值,ArrayList array = new ArrayList();也可以;但是为什么不保持统一风格呢~
      

  5.   

    用List是为以后有可能的代码修改留余地List l = new ArrayList();比如你发现了一个比ArrayList更好用的类,只要改变等号后面的实例化部分就可以了,条件是只要这个类还实现了List接口就可以了
      

  6.   

    ArrayList array = new ArrayList();
    这种写法肯定不是作为返回值声明,只是方法内部的临时变量,
    之所以认为认为这种写法更高效,是因为它的效率更高一点,执行方法时不需要动态绑定List array = new ArrayList();这种写法属于多态,需要动态绑定,速度相对慢一些(大概10%-20%),当然这种写法更简洁!
      

  7.   

    可以让你把一个ArrayList对象仅仅当作一个实现了List接口的东西来用,防止你用了ArrayList所特有的,而不属于List接口的方法。
    而在相当多的情况下,我们也的确不需要那些方法,这时候这样写是很有好处的,比如说突然有一天你发觉这里还是用LinkedList更好,那么就只需要把这一行代码修改成:
    List array = new LinkedList();
    就可以了,之后的根本不用改。
    而如果你原来用了
    ArrayList array = new ArrayList();
    说不定你就不小心用了许多ArrayList所特有的方法,这些方法List接口没有,LinkedList也没有,这时,你改起来就麻烦了,要小心翼翼地改好多地方。
      

  8.   

    当然,如果你已经确定了这里需要的正是ArrayList,而且你非常非常需要用到那些ArrayList所特有的方法和特性,那么这时你就没有别的办法了,只能写:
    ArrayList array = new ArrayList();