java为什么允许Map之间转换导致取值报错?

fdjkalfjklajdf 2015-06-25 08:27:14

package com.Test;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

public class M {
public static void main(String[] args){
testMap();
}

private static void testMap(){
Map<String,String> mapStr=new HashMap<String, String>();
Map<String,Object> mapObj=new HashMap<String, Object>();
mapObj.put("key1",new BigDecimal(1));
mapStr=(Map)mapObj;//为什么允许这样的类型转换?
String s=mapStr.get("key1");//Exception in thread "main" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
}
}

为什么java允许不同Map之间的赋值,而导致取值的时候报错?
...全文
175 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
finemi 2015-06-25
  • 打赏
  • 举报
回复
java的伪泛型问题多多,极其不好用反正我觉得
scott_129 2015-06-25
  • 打赏
  • 举报
回复
你都直接没有使用泛型来进行强转了,那编译肯定要给你过啊。 因为两个本来就是map,而你强转的时候并没有使用泛型,所以编译是无法进行检查。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧