[英]Why does this not cause a NullPointerException?
public class Null {
public static void greet() {
System.out.println("Hello world!");
}
public static void main(String[] args) {
((Null) null).greet();
}
}
程序輸出: Hello world!
。
我以為它會拋出一個NullPointerException
。
它為什么會發生?
方法greet()
是靜態的,因此它不需要Null
的封閉實例。 實際上,你可以[並且應該]調用它: Null.greet();
原因是greet()
是一個static
方法。 通過變量引用靜態方法不會導致取消引用指針。 編譯器應該已經警告過你。
如果你刪除static
修改器,那么你將得到npe
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.