类型转换问题报错

类型转换问题报错

情况一

报错图片:

java.lang.Long cannot be cast to java.lang.Integer
在这里插入图片描述

发现问题:

可以根据报错提示很明确地看出,应该是显示long类型不能转换为integer类型。并且,显示错误是出现在MangerServiceImpl类的第60行代码处。

我对map中得到的类型进行了强制转换,想要将从数据库查询到的long类型转换为int类型。但是不允许。

在这里插入图片描述

解决问题:

虽然不理解为什么不能将long类型强转换为int类型。

但是我想到一种解决方式【方法1】,将从数据库接收到的long类型数据转换为String类型,再将String类型转换为int类型/double类型,最后成功解决类型转换报错。
在这里插入图片描述

引申思考:

为什么会不允许强转呢?网上查到的解释是:

map.get(“String类型的键”)所提供的是Object类型(如下图),Object类是非基本数据类型。基本数据类型和引用类型不能进行强转。
在这里插入图片描述
但是map.get(“String类型的键”)从数据库获得的值是long类型的,为什么不能强制转换为int类型,这里还是没有解释清楚。但是出于这一点可以想到另一种解决方式【方法2】:

因为数据库聚合函数查询到的值是Long类型,取出来之后接的值没有加泛型,因此被转成了Object类型,这个时候就可以先将Object类型转为Long类型,再强制转为int类型。
在这里插入图片描述
网上的第三种方法,先转为Number类型(long类型和int类型的父类),再用value提取。
在这里插入图片描述

总结:

方法1:long类型转换为String类型,再将String类型转换为int/double类型;

方法2:确定接收的是long类型,则转换为long类型再强制转换为int类型;

方法3:先转为Number类型(long类型和int类型的父类),再用value提取

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
memcpy类型转换报错的原因可能是因为内存分配不成功,导致后续的操作非法。在代码中,使用了calloc函数分配内存,并通过判断返回值是否为NULL来判断内存是否分配成功。如果分配失败,就会出现内存访问超出系统所分配内存空间的情况,从而导致segmentation fault错误。可以通过加入打印信息来判断内存分配是否成功,如下所示: unsigned char *tmpbuffer; tmpbuffer=(unsigned char *)calloc(1,(size_t)(IMAGEWIDTH*IMAGEHEIGHT)); if(tmpbuffer==NULL) cout<<"error"<<endl; else cout<<"calloc successful"<<endl; 在这种情况下,可以考虑增加内存分配的大小或者检查其他可能导致内存分配失败的原因。同时,我们也可以参考C和指针方面的书籍来更好地理解这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [java中关于强制类型转换java报错](https://blog.csdn.net/weixin_31974443/article/details/114186225)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【记录】memcpy后报错:segmentation fault](https://blog.csdn.net/u011831771/article/details/78803590)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值