当前位置: 首页 > 科技观察

一篇带你Object转String

时间:2023-03-13 18:38:07 科技观察

开发的文章,你一定经常遇到将Object类型字段转换成String类型字段。例如,我们可以通过以下方式将定义为MapObject的类型转换为String:(String)objectobject.toString()Stirng.valueOf(object)""+object先不讨论哪一个现在好了,到底哪个不好,我们认真考虑一下从map中获取的值存在的几种情况。如果这个map是上游系统给我们的,而我们本着不信任上游系统的原则,那么作为type的某个key对应的value可能有以下几种情况:Integer类型value是一个空字符串value是aspacevalue不传值,默认为null此key不包含在map中对于这些情况,我们来详细分析下Object转String的方法。(String)object(String)object就是将Object类型的对象转换为String类型。空格、空字符串、null都可以进行转换,但是当Object对象的值类型不是Integer类型等字符串时,就会出现类型转换异常错误。publicstaticvoidmain(String[]args){/***为了兼容各种参数,map的值定义为Object类型*对于key为type的值,其值有以下几种情况:*1)value为字符串*2)value为空字符串*3)value为空格*4)value不传值,默认为null*5)map不包含该key*/MapmapParams=newHashMap();TypeEntityentity=newTypeEntity();/***类型转换*/mapParams.put("type",1);System.out.println("使用类型转换的结果是:"+(String)mapParams.get("type"));}结果是:Exceptioninthread"main"java.lang.ClassCastException:java.lang.Integercannotbecasttojava.lang.Stringatcom.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());运行结果为:Exceptioninthread"main"java.lang.NullPointerExceptionatcom.alipay.demo.StringTest.main(StringTest.java:39)总结:我们在使用object.toString()时,需要对获取的值Convert再次进行null判断。value为null有两种情况:key对应的value为null或者map中不存在key值。Stirng.valueOf(object)Stirng.valueOf(object)可以转换null、空格、空字符串等数据类型,是一种比较安全的转换方式。需要注意的是,当值为null时,方法会被转为“null”,这个值会影响业务后续的非空判断。我们看一下Stirng.valueOf()方法的源码:publicstaticStringvalueOf(Objectobj){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)转换结果为:nullfalsetrue总结:Stirng.valueOf(object)是一种比较安全的转换方式,但是需要特别注意的是当值为null时将其转换为“null”",以免干扰业务。使用时最好加上判断。""+object""+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"))));运行结果是:nullfalsetrue今天会到给!我是狗狗,希望你努力工作,快乐生活,开开心心过好每一天!