我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019全年资料大全正版 > 泛型类 >

map泛型 map不指定泛型 与 MObjectObject的区别

归档日期:07-21       文本归类:泛型类      文章编辑:爱尚语录

  String不是可以自动转换为Object吗?为什么map4 做参数报错呢?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  Map map1 = new HashMap();//这行代码实际上是说map1里面的key和value都认为是任意类型,也就是你可以理解为强制类型转换为方法test1的参数类型,没有问题;

  这里代码标明了map2的key是String,value是Object,正好和test1方法的参数类型匹配,没有问题;

  map3标明了里面的key和value都是Object类型,由于Object可以代表任何的数据类型对象(当然String也行),如果它里面保存的Integer的key呢?那么就不能作为方法test1的传入参数了,因此虚拟机考虑到这点,就出现变异错误了;

  这里标识了map4里面key和value都只能保存String的值,而方法

  test1处理的是String类型的key,Object类型的值,传入的不匹配,于是错误就出现了。

  最后,总结给你的就是,如果使用泛型作为方法参数,如果传入泛型实例,一定要求完全匹配,否则传入非泛型的数据类型。

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

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

  那为什么map1就可以呢,这里有历史原因,因为泛型是后加入的,早期的版本没有,但是java的开发者希望不能因为加入泛型就要修改成千上万的现有应用,所以默认他可以通融老版本不加泛型的变量,但是编译时一定会有提示你有危险代码的,正因为这样,泛型非常的好破,随便写点代码就可以让编译通过,而运行时错误,所以现在开发,一定要使用一种代码,千万不要两者都用,那样太危险,如果你用了泛型,就全部都用,切记切记

本文链接:http://buggystordera.com/fanxinglei/813.html