2

由于在is (抛出 a )myObject.toString()时失败,所以更安全地 do ,因为它本质上是在 do ,它不会失败,而是会导致 String 。myObjectnullNullPointerExceptionmyObject+""String.valueOf(myObject).concat("")"null"

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

4

2 回答 2

8

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

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

所以,现在是你的电话。我给了你一些选择。您可能想要抛出异常、记录消息并继续使用"null"字符串或一些默认字符串,例如"".

于 2014-02-06T19:04:49.703 回答
3

如果您想要这种行为,String.valueOf(myObject)请在减少 hacky 的同时获得相同的效果。但这也意味着null字符串和字符串"null"被同等对待。通常最好明确检查空值,除非您只是打印到日志等。但在这些情况下,大多数方法都采用对象引用并为您处理空值(例如 System.out.println、大多数日志框架等)

于 2014-02-06T19:09:10.307 回答