Я читаю о методах, которые включают в VAR-Arg параметры ...Java вар-арг проводной behavoir на расширение
это не законно заявить следующее (как вар-Arg неявно передается как массив т.е. будет метод дубликат)
void m1(int... i) {}
void m1(int[] i) {}
но протекающее законно заявить:
void m1(int... i) {}
void m1(Integer... i) {}
однако, эти методы могут быть только юридически вызываются с массивами одних и тех же типовнравится:
m1(new Integer[]{});
m1(new int[]{});
и не с:
m1(2, 3); //Compile ERR: The method m1(int[]) is ambiguous
m1(new Integer(2), new Integer(3)); //Compile ERR: The method m1(int[]) is ambiguous
ещеvoid m1(int... i){}
вызывается при вызове с:
m1((byte)1,(short)2);
m1(new Byte((byte)1), new Byte((byte)1));
//Both compile fine and the method
//void m1(int... i) {} is invoked
Мой вопрос является, если (byte)1,(short)2
или new Byte((byte)1), new Byte((byte)1)
передаются как int[]
почему он не ведет себя то же самое для m1(2, 3)
или m1(new Integer(2), new Integer(3));
?
'm1 (new Integer (3), new Integer (4));' дает ошибку компиляции 'Метод m1 (int []) неоднозначен "или" Метод m1 (Integer []) неоднозначен "в зависимости от порядок объявления m1 (int ...) и m1 (Integer ...) – DayaMoon
Thx VD, я посмотрю – DayaMoon