網站首頁 編程語言 正文
說明:記錄一次使用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<List<Map<String,String>類型的,表示多個結果集,每個結果集有多條數據,而結果集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;
}
原文鏈接:https://blog.csdn.net/qq_42108331/article/details/134301560
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2021-12-10 golang?db事務的統一封裝的實現_Golang
- 2023-12-11 Mybatis數據庫操作筆記(Mybatis基礎CRUD代碼)
- 2022-05-22 小白也可以完成的0基礎部署Nginx服務_nginx
- 2022-03-23 C++虛函數注意事項_C 語言
- 2022-12-02 C語言中qsort函數用法及用冒泡排序實現_C 語言
- 2023-02-09 Golang實現Trie(前綴樹)的示例_Golang
- 2022-05-03 使用EF的Code?First模式操作數據庫_實用技巧
- 2022-07-02 Python遠程SSH庫Paramiko詳細操作_python
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支