簡體   English   中英

為什么這不會導致NullPointerException?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM