2013-08-30 31 views
3

如果任何人都可以在下面解釋,那將會很棒。爲什麼print(String s)方法在下例中被調用,而print(Object o)未被調用。方法重載和null關鍵字

package com.example; 

public class DemoTest { 

    public void print(Object o){ 
     System.out.println("Object"); 
    } 
    public void print(String s){ 
     System.out.println("String"); 
    } 
    public static void main(String[] args) { 
     DemoTest dt = new DemoTest(); 
     dt.print(null); 

    } 
} 
+0

只是一個例子,但如果有'print(Integer i)'方法。那麼會選擇什麼?或者是一個錯誤? –

回答

1

Strange Java null behavior in Method Overloading

摘自「那是因爲String類的對象擴展,因此是更具體的對象,因此,編譯器決定調用該方法。請記住,編譯器總是選擇最具體的方法調用「。

+3

你可以把它鏈接起來...... –