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

发布于 2024-10-28 12:03:45 字数 110 浏览 1 评论 0原文

我总是写

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

是否有简单的方法来处理这种情况?

I always write

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

If there simple way to handle this case?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

过潦 2024-11-04 12:03:45

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

String stringRepresentation = String.valueOf(o);

The static valueOf method in the String class will do the null check and return "null" if the object is null:

String stringRepresentation = String.valueOf(o);
‖放下 2024-11-04 12:03:45

尝试 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"

Try Objects.toString(Object o, String nullDefault)

Example:

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"
蓝戈者 2024-11-04 12:03:45

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

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

只有一个注释 - 仅使用 toString() 进行调试和日志记录。不要依赖 toString() 的格式。

ObjectUtils.toString(object) from commons-lang. The code there is actually one line:

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

Just one note - use toString() only for debug and logging. Don't rely on the format of toString().

场罚期间 2024-11-04 12:03:45
import java.util.Objects;
Objects.toString(object, "")

简单且 0 运行时异常:)

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

Simple and 0 runtime exception :)

雪落纷纷 2024-11-04 12:03:45

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

来自 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”,而此方法返回空字符串。为了保留行为使用

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

Updated answer of Bozho and January-59 for reference:

ObjectUtils.toString(object) from commons-lang. The code there is actually one line:

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

However this method in Apache Commons is now deprecated since release 3.2 (commons/lang3). Their goal here was to remove all the methods that are available in Jdk7. The method has been replaced by java.util.Objects.toString(Object) in Java 7 and will probably be removed in future releases. After some discussion they did not remove it yet (currently in 3.4) and it is still available as a deprecated method.

Note however that said java 7+ method will return "null" for null references, while this method returns and empty String. To preserve behavior use

java.util.Objects.toString(myObject, "")
深海不蓝 2024-11-04 12:03:45

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

另一种可能是 String s = o == null? “默认”:o.toString()

String.valueOf(o) returns the string "null" if o is null.

Another one could be String s = o == null? "default" : o.toString()

慈悲佛祖 2024-11-04 12:03:45

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

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

You can use java 8 Optional in the following way:

String s = Optional.ofNullable(o).map(Object::toString).orElse("null");
后eg是否自 2024-11-04 12:03:45

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

Object o =
String s = ""+o;

这是 println 和字符串附加等的默认行为。

Depending on what you want it to on a null value but you can just do this

Object o =
String s = ""+o;

This is the default behaviour for println and string append etc.

故笙诉离歌 2024-11-04 12:03:45

当 o 不为 NULL 时,您似乎想要获取一个字符串。
但我很困惑,如果像你这样编码,你无法访问变量 s (你知道 s 在 if 语句的范围内)。

It looks like you want get a String when o is not a NULL.
But I'm confusing that if coding like yours you can't access variable s (you know s in scope of if statement).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文