日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

使用String.valueOf()的坑

作者:何中應 更新時間: 2023-12-09 編程語言

說明:記錄一次使用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

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新