在将对象转换为string之前testingnull的任何简单方法

我总是写

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

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

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

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

只需要注意一点 – 只能使用toString()来进行debugging和日志logging。 不要依赖toString()的格式。

String类中的静态valueOf方法将执行null检查,如果对象为null ,则返回"null"

 String stringRepresentation = String.valueOf(o); 

尝试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和1月-59更新的答案供参考:

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

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

但是,Apache Commons中的这种方法现在已经从版本3.2(commons / lang3)开始弃用了 。 他们的目标是去除所有在Jdk7中可用的方法。 该方法已被Java 7 java.util.Objects.toString(Object)所取代,并可能在未来版本中被删除。 经过一番讨论,他们还没有删除它(目前在3.4),它仍然可以作为一个不推荐的方法。

但是请注意,所说的java 7+方法将为空引用返回“null”,而此方法返回并为空String。 保留行为使用

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

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

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

您可以按照以下方式使用java 8 Optional:

 String s = Optional.ofNullable(o).map(Object::toString).orElse("null"); 

它看起来像你想获得一个string,当不是一个NULL。 但我很困惑,如果像你的编码,你不能访问variables(你知道在if语句的范围)。

根据你想要它在一个null值,但你可以做到这一点

 Object o = String s = ""+o; 

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