首页 > 其他 > 详细

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

时间:2018-12-04 20:30:18      阅读:183      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!