Java下浅谈String.valueOf()

今日遇到遇见无语的事情,mybatis查询数据库结果 List> 需要转换为字符串,但是在debug时,在idea小窗口单独执行代码,是可以正常编译的,离开idea小窗口执行就报错: 类型转换错误
报错代码如下:
Java下浅谈String.valueOf()_第1张图片
目标:把 entry.getValue() 获取的值转为字符串

str = entry.getValue().toString() ;

反编译class文件,如下展示:Java下浅谈String.valueOf()_第2张图片

str =((String)entry.getValue()).toString();

编译后代码,是先把 entry.getValue() 强制转为 String 后调用的 toString() ,因为我的 entry.getValue() 返回的是日期,所以这里铁定报错!!!可见,Java中代码预处理的结果并不是按照我们习惯上设想的那样。
解决方案:

String.value0f(entry.getValue());
/**
     * Returns the string representation of the {@code Object} argument.
     *
     * @param   obj   an {@code Object}.
     * @return  if the argument is {@code null}, then a string equal to
     *          {@code "null"}; otherwise, the value of
     *          {@code obj.toString()} is returned.
     * @see     java.lang.Object#toString()
     */
    public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }

Java下浅谈String.valueOf()_第3张图片
后来浅浅试 + “” 的方式将 entry.getValue() 转为字符串,class文件中依然是先把数据强制转为String,仍然报错!!!

entry.getValue() + ""

在这里插入图片描述
所以啊,避免以后麻烦,建议大家都直接用 String.valueOf() ,别玩那些花里胡哨的,浪费时间。

你可能感兴趣的:(Java基础,java,mybatis,intellij-idea)