toString但仅当不为空时

8

是否有可用的实用程序,可以轻松地获取任意对象的字符串表示形式(如果存在),并在其为null时保持其为null

例如

String result = null;
if (object != null) {
    result = object.toString();
}

但是更简洁。

我研究了ObjectUtilsString.valueOf,但两者都没有返回null本身。它们都返回默认字符串,即空字符串或字符串"null"而不是null本身。


6
你可以只使用字符串本身而不需要任何工具吗?你想要实现什么目的? - David Conrad
3
@Compass 那个三元运算符写成 return string; 的方式更慢。 - Elliott Frisch
1
我可能没有表达清楚,它不一定是一个字符串,可以是任何对象... - awgtek
2
你应该更改标题,标题中写着“...如果一个字符串是null...” - David Conrad
1
对象.toString(s, null) - JB Nizet
显示剩余5条评论
1个回答

26
如果我理解你的问题,你可以使用这个(java.util.Objects从JDK7开始就在这里):
Objects.toString(s, null); // return null if s is null, s.toString() otherwise

实际上,它适用于每一个对象。


StringUtils.defaultString(s) 不适用,因为它将值转换为空字符串,而我需要它为 null。 - awgtek
1
我认为Objects.toString(o, null)是唯一的选择。虽然我希望能避免额外的参数。 - awgtek
1
你是对的,但是 Objects.toString 很可能会起作用。 - NoDataFound
额外参数的好处是它清楚地告诉读者,您有意处理了 null,并且在值为 null 时故意返回 null 作为结果。很多时候,null 处理行为是偶然的,也是错误的来源,因此通过使用这种方法,很明显您作为代码编写者(可能)已经考虑过 null 的影响并选择了该行为。 - M. Justin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接