Меня убеждают, что компилятор java выполняет всю работу по выбору методов во время компиляции (или я не прав?).То есть он будет точно определять, какой метод использовать в каком классе во время компиляции, изучая иерархию классов и сигнатуры методов.Все, что затем требуется во время выполнения, - это выбрать объект, метод которого должен быть вызван, и это может работать только up в цепочке наследования.
Если это так, как это сделать?работа?
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
должен быть вызван?