使用String.valueOf()的坑
作者:互联网
2026-03-23
说明:记录一次使用String.valueOf()的坑,以下是一段有问题的代码:
String count = String.valueOf(listData.get(0).get(0).get("count");
if (StringUtils.isBlank(count) || "0".equals(count)) {
result.setResult(page);
return result;
}
问题分析
其中,listData是调用数据库存储过程,返回的数据集合,是List类型的,表示多个结果集,每个结果集有多条数据,而结果集1,通常表示记录的总条数,即count;
这段代码就是将第1个结果集中的count字段值获取出来,并转换为字符串。
正常情况,这段代码是没有问题的,后面也对count的值做了校验,如果count值为null或者0(StringUtils.isBlank(count) ),都不会往下走;
现在的问题是,当listData中,第1个结果集中没有count时,这段代码就有问题了。
问题是这个方法,当调用存储过程返回的结果集中,没有count这个结果集,String.valueOf()里面的内容是null,所以==String count会得到一个“null”字符串,而在下面的if判断中,StringUtils.isBlank(count)的返回结果会是false,这样就跳过了对count的空值判断==。
String.valueOf()
为什么null会被转为一个字符串呢?我们分析一下这个方法,如下:
// 方式一:将一个对象赋值为null,然后调用String.valueOf()方法
String str = null;
System.out.println(String.valueOf(str));
// 方式二:直接将null作为参数传入
System.out.println(String.valueOf(null));
这两种方式,前一种会打印“null”,后一种会报空指针异常;
也就是说,声明了的对象,赋值为null,作为参数传入String.valueOf()会返回null字符串。所以在上面的代码中,不能使用String.valueOf()将取出的值再转为String类型。修改如下:
String count = listData.get(0).get(0).get("count");
if (StringUtils.isBlank(count) || "0".equals(count)) {
result.setResult(page);
return result;
}
首次发布
hezhongying.blog.csdn.net/article/det…
相关推荐
专题
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
最新数据
相关文章
【从0到1构建一个ClaudeAgent】并发-后台任务
MyBatis、MyBatis-Plus、JPA、MyBatisGX 写法比较:同一个需求,四种解法
java2AI系列:SpringAI 通过 Function Calling 接入外部系统
Java 通用树形结构构建与解析工具类解析
深度剖析:Java 并发三大量难题 —— 死锁、活锁、饥饿全解
别再重复造轮子了!SpringBoot对接第三方系统模板,拿来即用
Spring AI 核心原理解析:基于 1.1.4 版本拆解底层架构
华为 IODT 设备接入
自定义跨字段校验必填注解
别再System.out了!这份SpringBoot日志优雅指南,让你告别日志混乱
AI精选
