一尘不染

在Java中使用null进行类型转换时没有异常

java

String x = (String) null;

为什么这句话没有例外?

String x = null;
System.out.println(x);

它打印null。但是.toString()方法应该抛出一个空指针异常。


阅读 290

收藏
2020-09-08

共1个答案

一尘不染

您可以转换null为任何引用类型,而不会出现任何异常。

println方法不会抛出空指针,因为它首先检查对象是否为空。如果为null,则仅打印字符串"null"。否则它将调用该toString对象的方法。

添加更多详细信息:String.valueOf(object)在输入对象上内部打印方法调用方法。在valueOf方法中,此检查有助于避免空指针异常:

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

为了避免混淆,如果不是特殊情况,则在null对象上调用任何方法都应引发null指针异常。

2020-09-08