Java中的字符串和空指针

发布于 2025-01-04 04:53:50 字数 599 浏览 1 评论 0原文

下面的代码让我很生气:

private String blahBlah(){
    return null;
}

@Test
public void myTest(){
    System.out.println(blahBlah()); //Good, output "null"
    Object obj = blahBlah();
    System.out.println(obj.toString()) //Good as above
    //System.out.println(blahBlah().toString()); //Bad, NullPointerException
    //System.out.println(((Object)blahBlah()).toString()); //Bad as above
}

任何人都可以解释上述行为吗?

更新:

上面的代码不是事实。我实际经历的是,我收到了 NullPointerException 并且我回溯到 toString() 的调用,并且我尝试了不同的解决方法,包括语句内转换,但它不起作用。但是在我使用单独的强制转换之后,我不小心删除了 toString() 调用,因此它可以工作。

The following code makes me mad:

private String blahBlah(){
    return null;
}

@Test
public void myTest(){
    System.out.println(blahBlah()); //Good, output "null"
    Object obj = blahBlah();
    System.out.println(obj.toString()) //Good as above
    //System.out.println(blahBlah().toString()); //Bad, NullPointerException
    //System.out.println(((Object)blahBlah()).toString()); //Bad as above
}

Can anyone explain the above behavior?

UPDATE:

The above code is NOT the truth. What I actually experienced is that I received NullPointerException and I track back to the call of toString(), and I tried different workarounds including in-statement casting but it does'nt work. But after I use seperated cast I accidentally removed the toString() call so it WORKED.

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

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

发布评论

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

评论(3

毁梦 2025-01-11 04:53:50

简单的。

您可以打印 null;您只是无法取消引用 null 值。

Easy.

You can print a null; you just can't de-reference a null value.

柏拉图鍀咏恒 2025-01-11 04:53:50

因为您返回的是指向 null 的字符串,而不是指向值为 null 的字符串。尝试将 return null 更改为 return ""。

Because you are returning a string pointing at null instead of pointing at a string with the value null. Try changing return null to return "".

月隐月明月朦胧 2025-01-11 04:53:50

您可以使用 String.valueOf(Object) 从对象获取 toString 输出,如果传入的值为 ,则使用 null

http://docs .oracle.com/javase/7/docs/api/java/lang/String.html#valueOf(java.lang.Object)

public static String valueOf(Object obj)

返回Object参数的字符串表示形式。

参数:
obj - 一个对象。

退货:
如果参数为 null,则等于 "null" 的字符串;否则,返回 obj.toString() 的值。

You can use String.valueOf(Object) to get the toString output from an object, or null if the value passed in is null.

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#valueOf(java.lang.Object)

public static String valueOf(Object obj)

Returns the string representation of the Object argument.

Parameters:
obj - an Object.

Returns:
if the argument is null, then a string equal to "null"; otherwise, the value of obj.toString() is returned.

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