public class Test{
public static void m1(Object o){
System.out.println("object called");
}
public static void m1(String s){
System.out.println("String called");
}
}
現在,這裏是下面的情況下,爪哇:使參數相同的方法簽名以外的參數類型
- M1( 「串」); 輸出:字符串
- m1(new String(「string」)); 輸出:字符串調用
- Object o =「string」; m1(o); 輸出:名爲 的對象
- Object o = new String(「string」); m1(o); 輸出:名爲 的對象
- Object o = new Object(); m1(o); 輸出:對象叫做
有人能解釋一下上面的場景嗎?
你的每個變量'o'被定義爲'Object',因此它調用'm1(Object)'。用'String'調用同樣的情況。 – SomeJavaGuy
'Object o =「string」'執行類型擦除,你迫使'String'被認爲是一個通用的'Object'。將'o'傳遞給'm1()'使用對象版本,因爲這是變量'o'的類型。 –