定义对象问题 Map<String,String> map1=new HashMap<String,String>(); HashMap<String,String> map2=new HashMap<String,String>();2者有什么区别?哪种定义更好? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 小程序无所谓大点的项目该用第一种,除非你要用到HashMap中独有的方法 第一种好些java倡导面向接口编程,集合很多都是定义一个父接口,然后不同的子类去实现它,这种做法的好处是便于以后的扩展,耦合性要低。当然只针对lz提出的这个问题,是没什么区别,都是hashmap,hashmap本身已经实现了map接口,关键点是如果以后自己设计应用的时候,可不可以这样做,像jdk的代码设计一样,更灵活。 肯定有区别1.灵活性 定义为Map之后更灵活 今后才有可能在需要的时候替换为HashMap之外的其它实现如TreeMap等,同时如Joshua Bloch等大师也倡导面向接口编程 code to interfaces2.有得必有失,第一种的tradeoff就是无法调用HashMap特有的方法,也就是存在于Map接口中所定义的方法之外的HashMap自己的方法,当然同时也是HashMap未override的方法 Map<String,String> map1=new HashMap<String,String>();这是父类的引用指向子类,是多态;java倡导面向接口编程,集合很多都是定义一个父接口,然后不同的子类去实现它,这种做法的好处是便于以后的扩展,耦合性要低。 第一种的tradeoff就是无法调用HashMap特有的方法是吗?应该可以调用HashMap的特有方法吧 人 张三 = new 男人()的问题,new出来的的确是男人,但是别人去用的时候,只能当人去用,虽然你真的是男人!那么张三能干的事,也仅仅是人能干的,而男人超越人的行为,是无法直接调用的,除非,你给强制转化下,但万一张三是女人呢?你当然知道张三肯定是男人,但是别人,未必知道! 这就是利用多肽,实现面向接口编程。变量的类型使用父类,然后指向子类,这样的话,如果实现变了,比如后来实现更改了,编程map的另一个子类LinkedHashMap,只在声明处更改即可。Map<String,String> map1=new LinkedHashMap<String,String>();当然这通过依赖注入来实现是最好的方式 有区别hashmap 实现了 map 请教如何用指定快捷键调用 java函数,万分感谢! java的多态、动态绑定 的问题 java里有种异常不能被捕获? 有没有JAVA 3D讨论区? 读研的方向:C好还是JAVA好?(另现在开始学java,有没有比较好的书籍推荐一下?) 请检查一下我的作业 继承问题 ResultSet作为形参传送的问题,在线等待 如何产生随机26个字母呀! 用多个connection还是单个connection好? jsp连接数据库 谁有sun.awt.shell的包啊??
java倡导面向接口编程,集合很多都是定义一个父接口,然后不同的子类去实现它,这种做法的好处是便于以后的扩展,耦合性要低。
当然只针对lz提出的这个问题,是没什么区别,都是hashmap,hashmap本身已经实现了map接口,关键点是如果以后自己设计应用的时候,可不可以这样做,像jdk的代码设计一样,更灵活。
2.有得必有失,第一种的tradeoff就是无法调用HashMap特有的方法,也就是存在于Map接口中所定义的方法之外的HashMap自己的方法,当然同时也是HashMap未override的方法
这是父类的引用指向子类,是多态;java倡导面向接口编程,集合很多都是定义一个父接口,然后不同的子类去实现它,这种做法的好处是便于以后的扩展,耦合性要低。
人 张三 = new 男人()的问题,new出来的的确是男人,但是别人去用的时候,只能当人去用,虽然你真的是男人!
那么张三能干的事,也仅仅是人能干的,而男人超越人的行为,是无法直接调用的,除非,你给强制转化下,但万一张三是女人呢?
你当然知道张三肯定是男人,但是别人,未必知道!
当然这通过依赖注入来实现是最好的方式
有区别
hashmap 实现了 map