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

use*_*949 57 java null

我总是写

Object o;
if (o!=null)
String s = o.toString();
Run Code Online (Sandbox Code Playgroud)

如果有简单的方法来处理这种情况?

mmc*_*omb 87

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

String stringRepresentation = String.valueOf(o);
Run Code Online (Sandbox Code Playgroud)


Jan*_* 59 63

尝试 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"
Run Code Online (Sandbox Code Playgroud)

  • 注意:这仅在Java 7中可用 (8认同)
  • 我更喜欢这个解决方案,因为它是最明确的,易于阅读.如果有人使用`ObjectUtils.toString`或`String.valueOf`,则必须始终读取JavaDoc以查看在给定参数为"null"的情况下将返回的内容.谢谢你! (4认同)

Boz*_*zho 48

ObjectUtils.toString(object)来自commons-lang.那里的代码实际上是一行:

return obj == null ? "" : obj.toString();
Run Code Online (Sandbox Code Playgroud)

只需一条注释 - toString()仅用于调试和日志记录.不要依赖于格式toString().

  • 自Java 7以来,不推荐使用方法`ObjectUtils.toString(object)`来支持`java.util.Objects.toString(Object)`,并且将在以后的版本中删除它.但请注意,所述方法将为null引用返回"null",而此方法返回并清空String.要保留行为,请使用`java.util.Objects.toString(myObject,"")`,如下面的其他答案中所述. (20认同)
  • 同意.toString()适用于人类,而非计算机. (2认同)

Nic*_*ven 8

更新了Bozho和1月59日的答案以供参考:

ObjectUtils.toString(object)来自commons-lang.那里的代码实际上是一行:

return obj == null ? "" : obj.toString();
Run Code Online (Sandbox Code Playgroud)

但是,自从版本3.2(commons/lang3)以来,Apache Commons中的这种方法现已被弃用.他们的目标是删除Jdk7中可用的所有方法.该方法已java.util.Objects.toString(Object)Java 7中取代,可能会在将来的版本中删除.经过一些讨论后,他们还没有删除它(目前在3.4中),它仍然可以作为弃用方法使用.

但请注意,所述java 7+方法将为null引用返回"null",而此方法返回并清空String.保持行为使用

java.util.Objects.toString(myObject, "")
Run Code Online (Sandbox Code Playgroud)


Tho*_*sen 7

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

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


use*_*703 6

import java.util.Objects;
Objects.toString(object, "")
Run Code Online (Sandbox Code Playgroud)

简单和0运行时异常:)

  • @Ralph“此方法返回`object.toString()`或`null`”。这里重要的事实是,当对象为“null”时,此方法实际上返回**一个字符串**,其中包含文本“null”。不是“空”引用。该方法基本上委托给“String.valueOf(object)”。 (2认同)

Geo*_*rge 5

您可以通过以下方式使用 java 8 Optional:

String s = Optional.ofNullable(o).map(Object::toString).orElse("null");
Run Code Online (Sandbox Code Playgroud)

  • 您可以通过使用 `Optional.ofNullable(o).orElse("null").toString();` 来避免由 `map()` 生成的第二个 `Optional` 的开销。 (2认同)