您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何使用Object轉String,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
開發中,小伙伴一定經常遇到將一個Object類型的字段轉換為String類型的字段。比如我們從一個類型定義為Map<String, Object>
Object轉換為String的方式有如下幾種:
(String)object
object.toString()
Stirng.valueOf(object)
""+object
我們暫且先不討論哪種好,哪種不好,我們先認真考慮下從map中get出來的value值存在幾種情況。
如果這個map是上游系統給我們的,秉持不相信上游系統的原則,那么某一個key為type對應的value值可能存在如下幾種情況:
value為字符串,符合傳遞要求
value為其他類型,比如為Integer類型
value為空字符串
value為空格
value沒傳值,默認為null
map中不包含這個key
針對這些情況,接下來我們具體分析Object轉換為String的方式。
(String)object是將Object類型的對象強制轉換為String類型。
對于空格、空字符串、null都可以轉換,但是Object對象的值類型不是字符串比如Integer類型時,會存在類型轉換異常錯誤。
public static void main(String[] args) { /** * 為了兼容各種參數,map的value值定義為了Object類型 * 針對一個key為type的值,它的value存在以下幾種情況: * 1)value為字符串 * 2)value為空字符串 * 3)value為空格 * 4)value沒傳值,默認為null * 5)map中不包含這個key */ Map<String, Object> mapParams = new HashMap<String, Object>(); TypeEntity entity = new TypeEntity(); /** * 強制類型轉換 */ mapParams.put("type",1); System.out.println("使用強制類型轉換的結果為:" + (String) mapParams.get("type")) ; }
運行結果為:
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at com.alipay.demo.StringTest.main(StringTest.java:30)
總結:
強制類型轉換這種方式如果上游系統不是自己團隊的盡量不要使用,很容易因為數據類型不一致轉換報錯。
object.toString()對空格、空字符串、其他數據類型都可以進行轉換。需要注意,值為null時的空指針異常。
/** * toString() */ mapParams.put("type", null); System.out.println("toString()轉換的結果為:" + mapParams.get("type").toString());
運行結果為:
Exception in thread "main" java.lang.NullPointerException at com.alipay.demo.StringTest.main(StringTest.java:39)
總結:
我們在使用object.toString()需要對獲取的value值先進行null的判斷再轉換。值為null的場景有兩種情況:key對應的value值為null或者map中不存在這個key值。
Stirng.valueOf(object)可以對null、空格、空字符串、其他數據類型進行轉換,是一個比較安全的轉換方法。
需要注意的是當值為null的時候該方法會轉換為"null",這個值會影響業務后續的非空判斷。
我們查看Stirng.valueOf()方法的源碼:
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); }
valueOf()方法本質是使用的obj.toString(),對于可能存在的空指針異常進行了判斷規避。
但是轉換的"null"可能會對我們的業務進行干擾,在使用這個方法的時候需要先判斷結果是否為null再進行轉換,當然如果沒有業務允許也可以不進行判斷。
/** * Stirng.valueOf(object) */ mapParams.put("type", null); System.out.println("Stirng.valueOf(object)轉換的結果為:" + String.valueOf(mapParams.get("type"))); System.out.println(String.valueOf(mapParams.get("type")) == null); System.out.println("null".equals(String.valueOf(mapParams.get("type"))));
運行結果為:
Stirng.valueOf(object)轉換的結果為:null false true
總結:
Stirng.valueOf(object)是比較安全的轉換方式,但是需要特別注意當值為null的時候轉換為"null",避免對業務進行干擾,在使用的時候最好是加上判斷。
""+object此方法是利用字符串的拼接特點將其他類型的數據轉換為字符串,它和Stirng.valueOf(object)類似不用考慮空格、空字符串、null、和其他數據類型,但是需要注意當值為null的時候會轉換為"null"。
/** * ""+object */ mapParams.put("type", null); System.out.println(""+mapParams.get("type")); System.out.println((""+mapParams.get("type")) == null); System.out.println("null".equals((""+mapParams.get("type"))));
運行結果為:
null false true
看完上述內容,你們對如何使用Object轉String有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。