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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 騛鹏 中级黑马   /  2013-3-20 15:44  /  1667 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 騛鹏 于 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 17:13

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

5 个回复

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

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
肖路宽 发表于 2013-3-20 16:46
ArrayList yure = new ArrayList();这样写yure是不是只能使用ArrayList中的方法。将来如果需求变更,不让 ...

谢谢 回答   ArrayList 不是实现了 List接口吗  既然这样 不用List定义 仍然可以拿到List中的方法吧
回复 使用道具 举报
騛鹏 发表于 2013-3-20 17:29
谢谢 回答   ArrayList 不是实现了 List接口吗  既然这样 不用List定义 仍然可以拿到List中的方法吧
...

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