成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇帶給你Object轉String

開發 前端
開發中,小伙伴一定經常遇到將一個Object類型的字段轉換為String類型的字段。本篇就給大家介紹相關知識。

[[398019]]

 開發中,小伙伴一定經常遇到將一個Object類型的字段轉換為String類型的字段。比如我們從一個類型定義為Map<String, Object>

Object轉換為String的方式有如下幾種:

  • (String)object
  • object.toString()
  • Stirng.valueOf(object)
  • ""+object

我們暫且先不討論哪種好,哪種不好,我們先認真考慮下從map中get出來的value值存在幾種情況。

如果這個map是上游系統給我們的,秉持不相信上游系統的原則,那么某一個key為type對應的value值可能存在如下幾種情況:

  1. value為字符串,符合傳遞要求
  2. value為其他類型,比如為Integer類型
  3. value為空字符串
  4. value為空格
  5. value沒傳值,默認為null
  6. map中不包含這個key

針對這些情況,接下來我們具體分析Object轉換為String的方式。

(String)object

(String)object是將Object類型的對象強制轉換為String類型。

對于空格、空字符串、null都可以轉換,但是Object對象的值類型不是字符串比如Integer類型時,會存在類型轉換異常錯誤。

  1. public static void main(String[] args) { 
  2.        /** 
  3.         * 為了兼容各種參數,map的value值定義為了Object類型 
  4.         * 針對一個key為type的值,它的value存在以下幾種情況: 
  5.         * 1)value為字符串 
  6.         * 2)value為空字符串 
  7.         * 3)value為空格 
  8.         * 4)value沒傳值,默認為null 
  9.         * 5)map中不包含這個key 
  10.         */ 
  11.        Map<String, Object> mapParams = new HashMap<String, Object>(); 
  12.        TypeEntity entity = new TypeEntity(); 
  13.        /** 
  14.         * 強制類型轉換 
  15.         */ 
  16.        mapParams.put("type",1); 
  17.        System.out.println("使用強制類型轉換的結果為:" + (String) mapParams.get("type")) ; 

 運行結果為:

  1. Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 
  2.     at com.alipay.demo.StringTest.main(StringTest.java:30) 

 總結:

強制類型轉換這種方式如果上游系統不是自己團隊的盡量不要使用,很容易因為數據類型不一致轉換報錯。

object.toString()

object.toString()對空格、空字符串、其他數據類型都可以進行轉換。需要注意,值為null時的空指針異常。

  1.  /** 
  2.  * toString() 
  3.  */ 
  4. mapParams.put("type"null); 
  5. System.out.println("toString()轉換的結果為:" + mapParams.get("type").toString()); 

 運行結果為:

  1. Exception in thread "main" java.lang.NullPointerException 
  2.     at com.alipay.demo.StringTest.main(StringTest.java:39) 

 總結:

我們在使用object.toString()需要對獲取的value值先進行null的判斷再轉換。值為null的場景有兩種情況:key對應的value值為null或者map中不存在這個key值。

Stirng.valueOf(object)

Stirng.valueOf(object)可以對null、空格、空字符串、其他數據類型進行轉換,是一個比較安全的轉換方法。

需要注意的是當值為null的時候該方法會轉換為"null",這個值會影響業務后續的非空判斷。

我們查看Stirng.valueOf()方法的源碼:

  1. public static String valueOf(Object obj) { 
  2.        return (obj == null) ? "null" : obj.toString(); 
  3.    } 

 valueOf()方法本質是使用的obj.toString(),對于可能存在的空指針異常進行了判斷規避。

但是轉換的"null"可能會對我們的業務進行干擾,在使用這個方法的時候需要先判斷結果是否為null再進行轉換,當然如果沒有業務允許也可以不進行判斷。

  1.  /** 
  2.  * Stirng.valueOf(object) 
  3.  */ 
  4. mapParams.put("type"null); 
  5. System.out.println("Stirng.valueOf(object)轉換的結果為:" + String.valueOf(mapParams.get("type"))); 
  6. System.out.println(String.valueOf(mapParams.get("type")) == null); 
  7. System.out.println("null".equals(String.valueOf(mapParams.get("type")))); 

 運行結果為:

  1. Stirng.valueOf(object)轉換的結果為:null 
  2. false 
  3. true 

 總結:

Stirng.valueOf(object)是比較安全的轉換方式,但是需要特別注意當值為null的時候轉換為"null",避免對業務進行干擾,在使用的時候最好是加上判斷。

""+object

""+object此方法是利用字符串的拼接特點將其他類型的數據轉換為字符串,它和Stirng.valueOf(object)類似不用考慮空格、空字符串、null、和其他數據類型,但是需要注意當值為null的時候會轉換為"null"。

  1.  /** 
  2.  * ""+object 
  3.  */ 
  4. mapParams.put("type"null); 
  5. System.out.println(""+mapParams.get("type")); 
  6. System.out.println((""+mapParams.get("type")) == null); 
  7. System.out.println("null".equals((""+mapParams.get("type")))); 

 運行結果為:

  1. null 
  2. false 
  3. true 

 今天就到這里了!

我是勾勾,愿您認真工作,快樂生活,開心每一天!

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2021-06-21 14:36:46

Vite 前端工程化工具

2021-01-28 08:55:48

Elasticsear數據庫數據存儲

2023-03-29 07:45:58

VS編輯區編程工具

2021-04-14 14:16:58

HttpHttp協議網絡協議

2021-04-08 11:00:56

CountDownLaJava進階開發

2024-06-13 08:34:48

2022-03-22 09:09:17

HookReact前端

2021-04-01 10:51:55

MySQL鎖機制數據庫

2021-03-12 09:21:31

MySQL數據庫邏輯架構

2022-02-17 08:53:38

ElasticSea集群部署

2022-04-29 14:38:49

class文件結構分析

2021-07-21 09:48:20

etcd-wal模塊解析數據庫

2021-10-28 08:51:53

GPIO軟件框架 Linux

2022-02-25 15:50:05

OpenHarmonToggle組件鴻蒙

2023-03-13 09:31:04

2021-07-08 07:30:13

Webpack 前端Tree shakin

2021-04-23 08:59:35

ClickHouse集群搭建數據庫

2021-04-14 07:55:45

Swift 協議Protocol

2022-03-08 08:32:43

Tekton云原生開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91影院| 日屁视频| 色爱综合网 | 亚洲国产一区二区三区 | 婷婷色国产偷v国产偷v小说 | 午夜精品久久久 | 日韩欧美国产一区二区 | 人人天天操 | 99免费在线视频 | 成人精品一区 | 国产午夜精品一区二区三区嫩草 | 中文字幕在线观看精品 | 一区二区三区回区在观看免费视频 | 中国免费黄色片 | 欧美日韩91 | 精品乱子伦一区二区三区 | 欧美 日韩 亚洲91麻豆精品 | 国产成人免费视频网站视频社区 | 成人国产一区二区三区精品麻豆 | 中文字幕11页 | 国产成人综合一区二区三区 | 日韩三级 | 性欧美精品一区二区三区在线播放 | 亚洲一区中文字幕 | 午夜视频在线播放 | 国产精品一区一区三区 | 天天操天天天干 | 在线国产小视频 | a级片在线观看 | 久久久久久久久久久久亚洲 | www.国产视频 | 天天操天天插 | 亚洲欧美一区在线 | 日韩欧美国产一区二区三区 | 国产精品日产欧美久久久久 | 性一交一乱一透一a级 | 国产日韩欧美一区二区在线播放 | 亚洲欧美一区二区三区国产精品 | 青娱乐国产 | 日韩精品视频在线 | 丁香婷婷久久久综合精品国产 |