在java中使用空值进行类型转换时没有例外
2022-08-31 05:26:49
String x = (String) null;
为什么这句话没有例外?
String x = null;
System.out.println(x);
它打印 .但方法应引发空指针异常。null
.toString()
String x = (String) null;
为什么这句话没有例外?
String x = null;
System.out.println(x);
它打印 .但方法应引发空指针异常。null
.toString()
可以强制转换为任何引用类型,而不会出现任何异常。null
该方法不会引发 null 指针,因为它首先检查对象是否为 null。如果为 null,则它只是打印字符串 。否则,它将调用该对象的方法。println
"null"
toString
添加更多详细信息:在输入对象上打印方法调用方法。在方法中,此检查有助于避免空指针异常:String.valueOf(object)
valueOf
return (obj == null) ? "null" : obj.toString();
对于其余的混淆,在 null 对象上调用任何方法都应该抛出 null 指针异常(如果不是特殊情况)。
可以强制转换为任何引用类型。您还可以调用将 a 作为参数处理的方法,例如 确实如此,但您不能引用值并对其调用方法。null
null
System.out.println(Object)
null
顺便说一句,有一个棘手的情况,似乎您可以对值调用静态方法。null
Thread t = null;
t.yield(); // Calls static method Thread.yield() so this runs fine.