String.valueOf(Object)与Objects.toString(Object)

便捷的方法String.valueOf(Object) 自JDK 1.0起就存在,并且是我经常使用的JDK提供的方法之一。 我以前曾在博客上评论过它的价值JDK 1.7引入了 Objects类 ,其中包括Objects.toString(Object)方法。 这篇文章比较了这两种听起来相似的方法。

这两个方法String.valueOf(Object)Objects.toString(Object)本质上都做相同的事情:如果传入的对象不为null则调用它的toString()方法;如果将null传递给它们,则返回字符串“ null” 。 简而言之,这两种方法都旨在提供一种简单的方法来调用对象的toString()而不必担心如果结果为null NullPointerException

下表比较了String.valueOf(Object)Objects.toString(Object)

特性 String.valueOf(Object) Objects.toString(Object)
Java SE 10方法Javadoc 返回Object参数的字符串表示形式。返回调用toString用于非结果null论证和‘空’的null参数。
Java SE 10返回Javadoc “如果参数为null ,则字符串等于“ null”; 否则,将返回obj.toString()的值。” “打电话的结果toString一个非null空‘的说法和’ null的说法”
方法修饰符 public static public static
重载版本 valueOf(布尔值)
valueOf(字符)
valueOf(char [],int,int) valueOf(双) valueOf(float) valueOf(int) valueOf(long) valueOf(对象)
toString(Object)
toString(Object,String)

从表面上看, String.valueOf(Object)Objects.toString(Object)似乎做同样的事情。 事实证明它们是相同的。 这是来自OpenJDK的Objects.toString(Object)的代码:

OpenJDK: Objects.toString(Object)定义

public static String toString(Object o) {
    return String.valueOf(o);
}

上面的代码片段显示Objects.toString(Object)方法只是委托给String.valueOf(Object)方法。 接下来显示String.valueOf(Object)的OpenJDK实现。

OpenJDK: String.valueOf(Object)定义

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

上面的代码片段显示,当需要使用对象的toString()表示形式时,可以调用String.valueOf(Object)Objects.toString(Object)而没有NullPointerException风险。 可能有较小的理由偏爱另一个,我通常选择直接调用String.valueOf(Object)不是通过Objects.toString(Object)对该方法的间接调用。

虽然我通常在默认情况下使用String.valueOf(Object) [而不是Objects.toString(Object) ],但如果传入的对象为null时,我希望返回字符串“ null”,则替代重载方法Objects.toString(Object,字符串)的优点是,如果传入的对象为null ,则允许用户指定要由该方法返回的任何字符串。 因此,例如,如果传入的对象为null ,则可以使用此方法返回空字符串( "" ),字符串“ nil”,字符串“ none”或任何其他任意字符串。 接下来显示Objects.toString(Object, String)的OpenJDK代码清单。

OpenJDK: Objects.toString(Object, String)定义

public static String toString(Object o, String nullDefault) {
    return (o != null) ? o.toString() : nullDefault;
}

关于Objects.toString(Object, String)实现的注意事项是,如果将null传递给此方法作为第二个参数,则该方法将返回null (而不是字符串“ null”或任何其他字符串) 。

使用String.valueOf(Object)Objects.toString(Object)Objects.toString(Object, String)可以轻松提供对象的字符串表示形式,而无需编写显式检查null

翻译自: https://www.javacodegeeks.com/2018/08/valueofobject-tostringobject.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值