我被引導認爲java編譯器在編譯時做了所有方法選擇的工作(或者我錯了嗎?)。也就是說,它會通過檢查類層次結構和方法簽名來確定在編譯時在哪個類中使用哪種方法。在運行時需要的全部內容是選擇要調用其方法的對象,並且這隻能在繼承鏈上運行向上。編譯時的方法選擇。如果參數可以有幾種類型呢?
如果是這樣的話,這是如何工作的?
int action = getAction();
StringBuilder s = new StringBuilder()
.append("Hello ") // Fine
.append(10) // Fine too
.append(action == 0 ? "" : action); // How does it do this?
這裏,參數的類型可以是String
或int
。在編譯時如何決定應調用StringBuilder
哪種方法?
這很有道理。隱藏的autobox是唯一的副作用。 – OldCurmudgeon