String x = (String) null;
为什么这句话没有例外?
String x = null; System.out.println(x);
它打印null。但是.toString()方法应该抛出一个空指针异常。
null
.toString()
您可以转换null为任何引用类型,而不会出现任何异常。
该println方法不会抛出空指针,因为它首先检查对象是否为空。如果为null,则仅打印字符串"null"。否则它将调用该toString对象的方法。
println
"null"
toString
添加更多详细信息:String.valueOf(object)在输入对象上内部打印方法调用方法。在valueOf方法中,此检查有助于避免空指针异常:
String.valueOf(object)
valueOf
return (obj == null) ? "null" : obj.toString();
为了避免混淆,如果不是特殊情况,则在null对象上调用任何方法都应引发null指针异常。