public class NullDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
NullDemo n = new NullDemo();
n.execute(null);
}
public void execute(Object o) {
System.out.println("object");
}
public void execute(Double o) {
System.out.println("double");
}
}
我已執行此上面的代碼並執行與執行(雙O)的方法。我需要知道它之所以執行執行(雙O),而不是執行(對象o)哪個重載方法會執行,爲什麼?
,並假設
public class NullDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
NullDemo n = new NullDemo();
n.method1(null); /// give the compilation error
}
public void method1(Float o) {
System.out.println("object");
}
public void method1(Double o) {
System.out.println("double");
}
}
,如果我做的方法public void方法1(浮O)和公共無效方法1(雙O)爲什麼會是這樣,它會給編譯錯誤?這與層次結構有關嗎?
我認爲編譯錯誤的發佈是因爲它很難區分double和float - 所以它對於選擇哪個函數是不明確的。 – mdebeus
你可以在這裏找到答案: http://stackoverflow.com/questions/19243708/how-do-overloaded-methods-work/19243758#19243758 –
現在我意識到它沒有Java作爲原始標記。悲傷的時刻。 – Makoto