您的位置:首页 > 其它

Map的new为什么是Map map=new HashMap();而不是new Map();?因为map是个接口,而接口不能被实例化!HashMap是map接口的实现类!

2016-05-26 16:03 323 查看
问题:

请问Map map=new HashMap(); 为什么是这样,而不是Map map=new Map();

答案:

Map是接口,hashMap是Map的一种实现。接口不能被实例化。
Map map=new HashMap(); 就是将map实例化成一个hashMap。这样做的好处是调用者不需要知道map具体的实现,map接口与具体实现的映射java帮你做了。

改例子也正好验证了,我对spring mvc核心技术之一的控制反转的理解:

参考我之前文章
http://blog.csdn.net/ideality_hunter/article/details/51502828
中的相关描述:

=================================================

有这么个LoginAction类,它想调用AdminService的hello()方法的时候,不引入控制反转,需要自己new;引入控制反转,就不用自己new了,直接调用就行。

public class LoginAction extends ActionSupport

{
private AdminService adminService = null;
public String execute() throws Exception
{
//spring mvc的控制反转中,spring mvc就是提我们new了一下而已.那么目的是什么?实现了接口和实现的分离,使得调用接口时不用关注他是怎么实现的。

               //不引入控制反转
//开始
AdminService aa=new AdminServiceIMP();
String b=aa.hello();
System.out.println("##########################BBBBBBBBBBBB"+b);
//结束

               //引入控制反转
adminService.hello();//该种方式和//开始//结束之间的代码等效
}

=================================================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: