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) { (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |