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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘永建 中级黑马   /  2013-4-27 17:07  /  1373 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘永建 于 2013-4-28 17:03 编辑

张老师总说:
List list = new ArrayList()要比写成
ArrayList list = new ArrayList()要好
我不太明白这两者的区别,请指教一下,希望可以详细一点,谢谢大家!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 袁梦希 于 2013-4-27 17:29 编辑

楼主你好:
其实也没有什么特别的,如果你用ArrayList list = new ArrayList()实例化,那么把这个对象给写死了,
如果你用List接口,List list = new ArrayList(),还可以实例化(new)其他List接口的实现类,
比如:
List<T> list = new ArrayList();
List<T> list = new LinkedList();
List<T> list = new Vector();
而你要用
ArrayList实例化对象,你就不能有这么多了。
ArrayList<T> list = new LinkedList();   错误
ArrayList<T> list = new Vector();        错误

其实究其原理就是多态的性质,让其可移植性变强了。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
ArrayList是实现了List接口的,多态形式的体现,所以可以写成List list=new ArrayList()至于这么写的好处就是,令你的代码将来易于维护,
比如说后来你发现你的list可能用链表实现会更好只需要改成List list=new LinkedList()就行了.

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
俺也学习一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马