A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于潇 中级黑马   /  2012-5-3 15:33  /  2036 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

List<T> list=new ArrayList<T>;
与ArrayList<T> list=new ArrayList<T>;
这两种定义的方法区别在哪里?一般用哪一种比较好呢?

4 个回复

倒序浏览
首先明确的是List是一个接口,ArrayList是接口下的一个具体实现类。
  当你定义为 List<T> list = new ArrayList<T>;  表示为,父类的引用指向子类的对象。java中多态的表现形式。这也是一种java中面向对象的思想,当然是这样定义会比较好。
  举个生活中的例子就比较好理解了。我有一堆苹果需要存储起来。这样我们就会想到用一个容器去装它。这时张三来了。他想到了用篮子。ok,可以。李四的做法是搞一个箱子。一样也可以,都是容器。不同的人会有不具体去装的方法。这样就更灵活。

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
List<T> list=new ArrayList<T>;这个是多态。父类引用指向子类,list想要调用ArrayList类的方法一定要向下转换,否则只能调用List类的方法。
ArrayList<T> list=new ArrayList<T>;ArrayList类引用list指向了一个新的ArrayList对象,对象list可以调用ArrayList类的方法。
如果list中的方法已经足够需求可以用第一个,如果需要用到ArrayList类中的方法,建议使用第二个,相对第一个还需要转换,第二个书写跟简化阅读性强。

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
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特有的

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
陈忠 发表于 2012-5-3 17:29
首先明确的是List是一个接口,ArrayList是接口下的一个具体实现类。
  当你定义为 List list = new ArrayLi ...

也就是说前一种比较好?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马