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();//该种方式和//开始//结束之间的代码等效
}
=================================================
请问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();//该种方式和//开始//结束之间的代码等效
}
=================================================
相关文章推荐
- POJ 1611 The Suspects
- cocos 2.2.3 和 cocos 2.2.6下载地址
- 微信支付接口之心酸
- Nodejs in Visual Studio Code 14.IISNode与IIS7.x
- sqlserver表分区小结
- Matlab基于Viola-Jones算法的人脸检测(2)
- HTTP POST请求并将请求参数设置成请求体添加到请求中
- Spring Security(06)——AuthenticationProvider
- Spring Aop实例
- Swift资源包----Swift语言的特点
- 使用 hsdis 查看 JIT 生成的汇编代码
- dubbo简介
- Android布局文件的一些属性值
- JAVA file文件操作
- Extjs combo赋值与刷新的先后顺序
- .net中数据缓存使用
- 距离感应
- 利用MyBatis Generator自动创建代码
- Fragment学习记录一 静态创建fragment
- 重要经验八---UIImage转换为CVPixelBufferRef