Что произойдет во время компиляции и выполнения данного кода?

public class Test {
    static void m(int ... a) {
        System.out.println("1");
    }

    static void m(Integer ... a) {
        System.out.println("2");
    }

    public static void main(String[] args) {
        m(1, 2);
    }
}
Explanation
Для вызова m(1,2) могут быть применены оба метода - и m(int ... a), и m(Integer ... a). Ни один из этих методов не является наиболее специфическим, поэтому возникает ошибка компиляции (ambiguous methods).
P.S. Ранние версии JDK8 содержали ошибку, из-за которой этот код успешно компилировался вопреки спецификации.

Слідкуй за CodeGalaxy

Мобільний додаток Beta

Get it on Google Play
Зворотній Зв’язок
Продовжуйте вивчати
тести з Java
Cosmo
Зареєструйся Зараз
або Підпишись на майбутні тести