2014-09-29 83 views
0
**public void testCompareTo() { 
    System.out.println("compareTo"); 
    Patient p = null; 
    Patient instance = null; 
    int expResult = 0; 
    int result = instance.compareTo(p); 
    assertEquals(expResult, result); 
}** 

有沒有辦法在空對象中調用方法,或者我必須在這裏執行異常嗎?在空對象JAVA中調用非靜態方法?

回答

3

不,您不能在空對象上調用非靜態方法,因爲這會導致NullPointerException

在致電instance.compareTo(p)之前,您必須驗證instance不爲空。

+1

其實任何引用,語義這是不正確的。你的意思是調用空對象上的任何方法總是拋出一個NullPointerException – ControlAltDel 2014-09-29 17:30:38

+0

有沒有辦法爲變量「result」設置一個值?如果我不能調用compareTo並且不改變和'p '和'instance' – user3133474 2014-09-29 17:35:31

+1

@TJCrowder這很有趣。我從來沒有試過通過空對象引用調用一個靜態方法。然後,我試着不通過對象引用來調用靜態方法,所以我從來沒有嘗試過它並不是一個驚喜。 – Eran 2014-09-29 17:35:36

0

null對象的定義是...什麼也沒有。您不能在空對象上調用實例級方法而不會導致NullPointerException

+0

*「您不能在空對象上調用任何內容而不會導致'NullPointerException' * *您可以知道:A * static *方法。 (奇怪但是真的。) – 2014-09-29 17:31:21

+1

你在技術上調用類的方法,而不是對象。 – 2014-09-29 17:31:52

+0

是的,相當真實。您正在使用變量/數據成員(例如,編譯器會如何確定哪些類是相關的),但不是*對象*。 – 2014-09-29 17:36:28

0

NullPointerException異常是在這種情況下,如Java必然不能得到一個空的對象,這使得它明顯拋出NullPointerException

相關問題