2011-02-07 50 views
2

我的程序拋出NullPointerException的實例方法。我懷疑Calling the instance method of a null object是它拋出一個空指針異常的原因。這是什麼意思調用空對象「

誰能解釋一下,這實際上意味着什麼呢?

+0

當你試圖在調試器中捕獲這個時,你看到了什麼? – 2011-02-07 11:05:26

回答

1

Java中有兩種類型的方法:靜態和實例。一個靜態方法可以在沒有該類的實例的情況下被調用,一個實例方法必須被調用到該類的一個實例上。靜態方法不能調用實例方法或使用實例數據,但反過來不成立實例方法可以調用靜態方法並使用靜態數據。

您看到的空指針異常(NPE)是因爲您正在調用空引用上的實例方法。您需要將引用設置爲該類的實際對象(或其子類)。

但有趣的是,在空引用上調用靜態方法是合法的。這是非常奇怪的語法和有點誤導,但它會起作用。

12

這意味着你有一些代碼看起來是這樣的:

foo.method(); 

...和foonullfoo必須參考的對象實例的鄰。你可以調用方法或訪問它的字段。例如,你必須指定foonull以外的東西),如foo = new Foo();等。

+0

+1 short and sweet – Nishant 2011-02-07 11:05:47

0

您對未初始化的對象調用方法。對於爲例你的代碼中有一行例如:

myObject.callMethod(); 

但這種「myObject的」尚未有這樣一行初始化:

myObject = new myObjectClass(); 

如果你想更多的上下文請張貼一些代碼回答!