出现java.lang.Integer cannot be cast to java.lang.String的问题解决

javaweb实际开发中,遇到这样一个问题,因业务要求,使用mybatis对数据库进行操作,而返回值需要通过Map类型的参数进行接收,以下是出现问题的部分代码:

//此处是调用查询接口查询数据
Map<String,String> dataMap = bczhXxzcTaskInfoMapper.selectData();
//以下为出现异常的代码
String str = dataHashMap.get("key");

事实上,虽然返回结果是使用Map接收,但实际上会使用Map进行接收,因此使用mybatis对数据进行获取时,数据库中的某字段为int,那么返回的类型则是Integer。
因此需要进行类型转换,那么出问题的代码则需改成

String str = String.valueOf(dataHashMap.get("key"));

并且发现,当使用以下形式进行转换时,还是会出现相同的问题,那么我们将源文件和反编译后的class文件进行对比,我们来看下为什么?当前结果无法强制转换成String
.java文件

String str = dataHashMap.get("key") + "";

.class文件

String str = (String)dataHashMap.get("key") + "";

因此在不确定变量类型时推荐使用String.valueOf进行转换

你可能感兴趣的:(后端,数据库,Java,java,mybatis)