Что произойдет во время компиляции и выполнения данного кода?
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);
}
}
Для вызова m(1,2) могут быть применены оба метода - и m(int ... a), и m(Integer ... a). Ни один из этих методов не является наиболее специфическим, поэтому возникает ошибка компиляции (ambiguous methods).
P.S. Ранние версии JDK8 содержали ошибку, из-за которой этот код успешно компилировался вопреки спецификации.
Login in to like
Login in to comment