码迷,mamicode.com
首页 > 其他好文 > 详细

map泛型 map不指定泛型 与 Map<Object,Object>的区别

时间:2018-12-04 20:38:52      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:它的   意义   代码   现在   千万   变量   使用   对象   修改   

map泛型 map不指定泛型 与 Map<Object,Object>的区别



private void viewDetail(){
    Map map1 = new HashMap();
    Map<String,Object> map2 = new HashMap<String,Object>();
    Map<Object,Object> map3 = new HashMap<Object,Object>();
    Map<String,String> map4 = new HashMap<String,String>();
    test1(map1);
    test1(map2);
    test1(map3);    //编译错误
    test1(map4);    //编译错误
}

private void test1(Map<String,Object> map){
}

在泛型这里 Object 就只表示Object 不能表示所有对象

因为泛型是保证编译时你给的实际类型和参数声明的类型一致,它的意义就在于此,不需要解释,这是需要你学习的规则而已。

那为什么map1就可以呢,这里有历史原因,因为泛型是后加入的,早期的版本没有,但是java的开发者希望不能因为加入泛型就要修改成千上万的现有应用,所以默认他可以通融老版本不加泛型的变量,但是编译时一定会有提示你有危险代码的。

正因为这样,泛型非常的好破,随便写点代码就可以让编译通过,而运行时错误,所以现在开发,一定要使用一种代码,千万不要两者都用,那样太危险,如果你用了泛型,就全部都用,切记切记

map泛型 map不指定泛型 与 Map<Object,Object>的区别

标签:它的   意义   代码   现在   千万   变量   使用   对象   修改   

原文地址:https://www.cnblogs.com/zhuhui-site/p/10037753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!