繁体   English   中英

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

[英]Any simple way to test null before convert an object to string

我总是写

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

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

String类中的static 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"

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

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

只需注意一点 - 使用toString()仅用于调试和日志记录。 不要依赖toString()的格式。

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

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

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

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

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

java.util.Objects.toString(myObject, "")
import java.util.Objects;
Objects.toString(object, "")

简单和0运行时异常:)

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

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

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

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

根据您想要的null值,但您可以这样做

Object o =
String s = ""+o;

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

当o不是NULL时,看起来你想得到一个String。 但是我很困惑,如果像你这样的编码你不能访问变量s(你知道在if语句的范围内)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM