文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Object转String

2024-04-02 19:55

关注

今天就跟大家聊聊有关如何使用Object转String,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

如何使用Object转String

开发中,小伙伴一定经常遇到将一个Object类型的字段转换为String类型的字段。比如我们从一个类型定义为Map<String, Object>

Object转换为String的方式有如下几种:

我们暂且先不讨论哪种好,哪种不好,我们先认真考虑下从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类型时,会存在类型转换异常错误。

public static void main(String[] args) {                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时的空指针异常。

  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) {        return (obj == null) ? "null" : obj.toString();    }

valueOf()方法本质是使用的obj.toString(),对于可能存在的空指针异常进行了判断规避。

但是转换的"null"可能会对我们的业务进行干扰,在使用这个方法的时候需要先判断结果是否为null再进行转换,当然如果没有业务允许也可以不进行判断。

  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

""+object此方法是利用字符串的拼接特点将其他类型的数据转换为字符串,它和Stirng.valueOf(object)类似不用考虑空格、空字符串、null、和其他数据类型,但是需要注意当值为null的时候会转换为"null"。

  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有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯