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

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 содержали ошибку, из-за которой этот код успешно компилировался вопреки спецификации.

Follow CodeGalaxy

Mobile Beta

Get it on Google Play
Send Feedback
Keep exploring
Java quizzes
Cosmo
Sign Up Now
or Subscribe for future quizzes