加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 综合聚焦 > 编程要点 > 资讯 > 正文

Object转String的小妙招

发布时间:2021-05-21 06:15:06 所属栏目:资讯 来源:互联网
导读:开发中,小伙伴一定经常遇到将一个Object类型的字段转换为String类型的字段。比如我们从一个类型定义为MapString, Object Object转换为String的方式有如下几种:
副标题[/!--empirenews.page--]

开发中,小伙伴一定经常遇到将一个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

(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()

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)

Stirng.valueOf(object)可以对null、空格、空字符串、其他数据类型进行转换,是一个比较安全的转换方法。

需要注意的是当值为null的时候该方法会转换为"null",这个值会影响业务后续的非空判断。

我们查看Stirng.valueOf()方法的源码:

public static String valueOf(Object obj) { 

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读