不应该使用String.valueOf的场景
Posted yanshiqaq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不应该使用String.valueOf的场景相关的知识,希望对你有一定的参考价值。
今天在接口中接收参数转换String时遇到一个巨大的坑,也是自己疏忽大意所致----
事情是这样的,项目中接口的公共入参对象为Map<String,Object>,而sql中需要的参数为String数组。
我习惯性的取出参数value后就用String.valueOf转换了一下切分为数组传了过去,结果在测试时发现无论该参数传null值还是不写,都不会被sql的非空判断拦截----
<!-- 查询图表数据,所有或单个 --> <select id="queryExhibitionInfo" resultMap="BaseResultMap" parameterType="java.util.List"> select REPORT_TYPE,ELEMENT_KEY,ELEMENT_NAME,ELEMENT_DESC,ELEMENT_VALUE from TOOL_DOC_REPORT_CONF_T <if test="_parameter != null"> where REPORT_TYPE in <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> #{item} </foreach> </if> </select>
当时那个奇怪啊----打了个debug才发现,null被转换成字符串了!!!!
作为一个小白,一直以为转String就应该用String.valueOf,可以避免空指针----
现在才知道,toString()方法也是有适用场景的,这里使用toString()就不会出现这种情况了。一定要吸取教训!
以上是关于不应该使用String.valueOf的场景的主要内容,如果未能解决你的问题,请参考以下文章
toString()String.valueOf(String)强转,如何抉择,你真的了解吗?小白必看,面试必考
MapClustering 不渲染 String.valueof(cluster.getSize)