+“”比.toString()更好吗?

时间:2014-02-06 18:58:37

标签: java object-to-string

由于myObject.toString() myObjectnull(引发NullPointerException)时myObject+""失败,因此执行String.valueOf(myObject).concat("")会更安全,因为它基本上是"null" },但不会失败,而是会导致字符串{{1}}。

然而,这是一个好习惯吗?我的第一个想法是,似乎可能需要更长时间才能执行,因为它隐含地调用了两种方法,但它确实有助于保证不会崩溃。

2 个答案:

答案 0 :(得分:8)

你当然可以做myObject+""。但正如您已经知道的那样,这需要一些额外的方法调用。这将取决于您正在使用它的应用程序。这个额外的方法调用是否会成为应用程序的瓶颈?我想这很少是一个问题。或者,为了避免额外的方法调用,您可以直接使用String#valueOf()方法。但这取决于你想要处理null的方式。在这种情况下,我肯定不会正常进行。至少记录一条指示null参考的消息。

此外,如果您已经使用Java 7,那么您可以使用Objects.toString(Object)方法为您处理null。同样,该方法为"null"引用返回null

所以,现在是你的电话。我给了你一些选择。您可能希望抛出异常,日志消息并继续使用"null"字符串或某些默认字符串,如""

答案 1 :(得分:3)

如果你想要这种行为,那么String.valueOf(myObject)会让你变得不那么黑客。但这也意味着null字符串和字符串"null"被视为相同。通常最好明确检查空值,除非您只是打印到日志等。但在这些情况下,大多数方法都会使用Object引用并为您处理空值(例如System.out.println,大多数日志框架等)。