您当前的位置: 首页 >  Java

星拱北辰

暂无认证

  • 0浏览

    0关注

    1205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Java】Object转换为String的三种策略总结

星拱北辰 发布时间:2020-03-03 22:31:52 ,浏览量:0

java.lang.Object → java.lang.String
  • String str = (String)obj; ,即使用强转,从父类型Object向下转型为String。
  • String str = obj.toString(); ,即使用Object一定会存在的toString()方法。
  • String str = String.valueOf(obj); ,即使用String类的静态方法,将一个Object类型的变量转成String类型对象。
StrategyⅠ

由于不仅仅是String,所有类的共同父类都是Object,所以是可以向下转型的。

但是,如果obj实际上不是String类型的,会爆java.lang.ClassCastException的。

因此,如果非要用,建议使用 instanceof 先做一下判断吧。

这种方法的好处就是用这顺手、简单。

StrategyⅡ

toString()是从Object类就有的方法,直接调用也很方便。

问题也很明显,最让人崩溃的 java.lang.NullPointerException 啊!

如果obj是null的话,直接一长串空指针……

StrategyⅢ

这个方法比较神奇,因为它有9个重载方法(重载就是方法/函数同名,但参数列表个数或者类型不同):

  • String.valueOf(boolean value): String
  • String.valueOf(char value): String
  • String.valueOf(char[] data): String
  • String.valueOf(double value): String
  • String.valueOf(float value): String
  • String.valueOf(int value): String
  • String.valueOf(long value): String
  • String.valueOf(Object data): String
  • String.valueOf(char[] data, int start, int length): String

使用的时候特殊情况是String.valueOf(null), 这时调用的是:String.valueOf(Object data)。 (IDE中按住Ctrl就可以追溯引用了)

String.valueOf(Object data)的源码如下:

public static String valueOf(Object obj) {
    return obj == null ? "null" : obj.toString();
}

最终并不会空指针,而是返回"null"

所以这种策略虽然不容易爆异常,但也可能得到不想要的结果,即"null",所以还是需要处理一下的。

关注
打赏
1660750074
查看更多评论
立即登录/注册

微信扫码登录

0.0911s