Какой метод вызывается? (Целое… a )vs. (int a, int b)

Я только что узнал об очень интересном Java-трюке :

void method1(Integer... a){
}

. Таким образом, вы можете задать этому методу столько целых чисел, сколько захотите.

Теперь, если у меня есть подобный (перегруженный )метод, подобный этому:

void method1(int a, int b){

}

Какой метод запускается, когда я выполняю следующую строку:

method1(1, 2);

Что ж, я мог бы очень легко это выяснить, просто протестировав его с помощью разных инструкций метода, но когда я думаю о «правилах» в «перегрузке» методов, я должен убедиться, что каждый перегруженный метод должен быть идентичен, чтобы компилятор знал какой именно использовать.

На мой взгляд, приведенный выше код не должен работать, потому что компилятор должен быть сбит с толку. Но когда я пробую это, это работает.

Итак... кто-нибудь знает немного больше справочной информации об этом?

22
задан Pshemo 3 August 2012 в 22:06
поделиться