黑马程序员技术交流社区

标题: 集合的一个问题 [打印本页]

作者: 于潇    时间: 2012-5-3 15:33
标题: 集合的一个问题
List<T> list=new ArrayList<T>;
与ArrayList<T> list=new ArrayList<T>;
这两种定义的方法区别在哪里?一般用哪一种比较好呢?
作者: 陈忠    时间: 2012-5-3 17:29
首先明确的是List是一个接口,ArrayList是接口下的一个具体实现类。
  当你定义为 List<T> list = new ArrayList<T>;  表示为,父类的引用指向子类的对象。java中多态的表现形式。这也是一种java中面向对象的思想,当然是这样定义会比较好。
  举个生活中的例子就比较好理解了。我有一堆苹果需要存储起来。这样我们就会想到用一个容器去装它。这时张三来了。他想到了用篮子。ok,可以。李四的做法是搞一个箱子。一样也可以,都是容器。不同的人会有不具体去装的方法。这样就更灵活。
作者: 魏征    时间: 2012-5-3 21:34
List<T> list=new ArrayList<T>;这个是多态。父类引用指向子类,list想要调用ArrayList类的方法一定要向下转换,否则只能调用List类的方法。
ArrayList<T> list=new ArrayList<T>;ArrayList类引用list指向了一个新的ArrayList对象,对象list可以调用ArrayList类的方法。
如果list中的方法已经足够需求可以用第一个,如果需要用到ArrayList类中的方法,建议使用第二个,相对第一个还需要转换,第二个书写跟简化阅读性强。


作者: 永恒之翼网络    时间: 2012-5-3 21:58
List<T> list=new ArrayList<T>;list只能使用List提供的方法,而不能ArrayList特有的方法。
ArrayList<T> list=new ArrayList<T>;list不仅能使用List提供的方法,而且能ArrayList特有的方法。
一般用哪一种比较好,这个是根据具体使用而定的。如果使用时不涉及到ArrayList的特有方法时,使用List<T> list=new ArrayList<T>;如果涉及到ArrayList的特有方法时,使用ArrayList<T> list=new ArrayList<T>;如: void ensureCapacity(int minCapacity)  就是ArrayList特有的
作者: 于潇    时间: 2012-5-4 09:12
陈忠 发表于 2012-5-3 17:29
首先明确的是List是一个接口,ArrayList是接口下的一个具体实现类。
  当你定义为 List list = new ArrayLi ...

也就是说前一种比较好?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2