map中存入object强转回原类型错误

给同事改了个bug,非得抬杠说为什么

先看map存入的数据

   Map<String,Object> map = new HashMap<>();
        map.put("key",Long.valueOf("-85064526666"));

然后取出来

	//error
        System.out.println(Long.parseLong((String) map.get("key")));

我第一眼看也觉得没毛病,但是报错
java.lang.Long cannot be cast to java.lang.String

类型转换错误,挺好解决的

	//true
		 System.out.println(Long.valueOf(map.get("key").toString()));

这又有什么区别呢,整天写代码,这些基础性的东西就都忘了,我也答不上来,那就写个test打断点

结果挺尴尬的
因为map中存的是Long类型的,所以转强转String会报错,toString不会报错

当然这样才正常,引以为戒

	//true
		System.out.println((Long) map.get("key"));

版权声明:本文为weixin_43029992原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。