在将对象转换为字符串之前测试 null 的任何简单方法

我一直在写作

Object o;
if (o!=null)
String s = o.toString();

如果有简单的方法来处理这个案子呢?

90235 次浏览

如果 o 为 null,则 String.valueOf(o)返回字符串“ null”。

另一个可能是 String s = o == null? "default" : o.toString()

如果对象是 null,那么 String类中的静态 valueOf方法将执行 null 检查并返回 "null":

String stringRepresentation = String.valueOf(o);

这里的代码实际上只有一行:

return obj == null ? "" : obj.toString();

只有一个注意事项-使用 toString()只用于调试和日志记录。不要依赖于 toString()的格式。

取决于您希望它在 null值上是什么样的,但是您可以这样做

Object o =
String s = ""+o;

这是 println 和 string append 等的默认行为。

看起来,当 o 不是 NULL 时,您希望得到一个 String。 但是我感到困惑的是,如果像您这样编写代码,您就不能访问变量 s (您知道在 if 语句的作用域中是 s)。

试试 Objects.toString(Object o, String nullDefault)

例如:

import java.util.Objects;


Object o1 = null;
Object o2 = "aString";
String s;


s = Objects.toString(o1, "isNull"); // returns "isNull"
s = Objects.toString(o2, "isNull"); // returns "aString"

Bozho 及一月至五十九日的最新答案以供参考:

这里的代码实际上只有一行:

return obj == null ? "" : obj.toString();

然而,自从3.2版(Commons/lang3)以来,Apache Commons 中的这个方法现在是 不赞成。他们的目标是删除 Jdk7中可用的所有方法。该方法已被 爪哇7中的 java.util.Objects.toString(Object)所取代,并可能在未来的版本中被删除。经过一些讨论,他们还没有删除它(目前在3.4) ,它仍然作为一个不推荐的方法可用。

但是请注意,这个 java 7 + 方法将返回“ null”作为空引用,而这个方法返回空 String。要保留行为,请使用

java.util.Objects.toString(myObject, "")

你可以通过以下方式使用 java 8可选项:

String s = Optional.ofNullable(o).map(Object::toString).orElse("null");
import java.util.Objects;
Objects.toString(object, "")

简单和0运行时异常:)