Предположим, у меня есть следующие два объявления методаКак компилятор распознает, какой перегруженный метод использовать?
public void foo() {/* do something */ }
public void foo(String...args) {/* do something else */}
Затем, когда я призываю foo()
, как это Java знает, что я имел в виду, чтобы назвать первым? Насколько я понимаю, я мог бы означать второе. Потому что следующее работает просто отлично.
public void bar(String...args) {}
public void callBar()
{
// call bar() with no arguments.
bar();
}
Ответ rgettman на [this] (http://stackoverflow.com/questions/19366332/variable-argument-constructor-may-conflict-but-compiles/19366472#comment28697215_19366472) только что вчера объясняет вещи очень хорошо. – ajb