黑马程序员技术交流社区

标题: 有关 集合定义 问题?? [打印本页]

作者: 騛鹏    时间: 2013-3-20 15:44
标题: 有关 集合定义 问题??
本帖最后由 騛鹏 于 2013-3-20 17:29 编辑
  1. HashMap<String,List<Student>> czbk = new HashMap<String,List<Student>>();
  2.                
  3.                 List<Student> yure = new ArrayList<Student>();
  4.                 List<Student> jiuye = new ArrayList<Student>();
复制代码
(day16--MapDemo3.java)  这里为何不这样定义: ArrayList<Student> yure = new ArrayList<Student>();    这样不是更严谨吗

还有 Map<String,List<Student>> czbk = new HashMap<String,List<Student>>();  
作者: 我手心里的宝    时间: 2013-3-20 15:55
(day16--MapDemo3.java)  这里为何不这样定义: ArrayList<Student> yure = new ArrayList<Student>();   
这样写是可以的,但是后续我们要面向接口编程,以后还会用到泛型,反射,代理类  你不要纠结这个问题了,以后你学习到新技术的时候你就明白了
作者: 聂益飞    时间: 2013-3-20 15:57
不知道你想说什么,其实你说的对,如果不用父类引用指向子类对象的多态形式的确让程序代码更严谨,但是源代码也没什么错不是!也许人家这么写有人家的需求呢!
作者: Alex shaw    时间: 2013-3-20 16:46
ArrayList<Student> yure = new ArrayList<Student>();这样写yure是不是只能使用ArrayList中的方法。将来如果需求变更,不让你使用ArrayList,那后面的那些代码是不是需要发生改变,
而List list = new ArrayList 虽然说不严谨,但是却为后期的扩展和维护提供了保障,因为不管你后期是否使用ArrayList,后面的方法全部都是list里面的,你只需要该这一句实现就可以,这就叫面向接口编程
凡事都有利有弊,你那样写虽然严谨,但如果后期需要修改会更加麻烦,而我这样写虽然不严谨,但是后期修改却非常简单,我们得学会辩证的看待问题。当你学到spring时候就会知道面向接口编程的好处了
作者: 騛鹏    时间: 2013-3-20 17:29
肖路宽 发表于 2013-3-20 16:46
ArrayList yure = new ArrayList();这样写yure是不是只能使用ArrayList中的方法。将来如果需求变更,不让 ...

谢谢 回答   ArrayList 不是实现了 List接口吗  既然这样 不用List定义 仍然可以拿到List中的方法吧

作者: 聂益飞    时间: 2013-3-20 17:53
騛鹏 发表于 2013-3-20 17:29
谢谢 回答   ArrayList 不是实现了 List接口吗  既然这样 不用List定义 仍然可以拿到List中的方法吧
...

其实他的意思蛮简单的!就是说有一天!你如果需要扩展功能!!不再使用ArrayList存储元素,例如改用LinkList存储!这个时候如果程序初期采用List引用的话就可以直接调用LinkList子类对象,等于是给你提供了一个接口!便于程序扩展!而如果不这么做!首先你需要导包,然后需要new 他本身的对象,然后再来调用方法!




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