Вопросы по тегу: ambiguous

(1)

Метод неоднозначен для типа Error

Я пытаюсь понять, как работает перегрузка в JAVA, и пытаюсь понять различные правила перегрузки, которые применяются в случае расширения, автобокса и varargs в JAVA. Я не могу понять, что происходит в следующем сценарии: package package1; public class JustAClass { public static void add(int a, long b) { System.out.println("all primitives"); } //public static void add(Integer a, long b) { // System.out.println("Wraper int, primitive long"); //} public static void add(int a, Long b) { System.out.println("Primitive int, Wrapper long"); } public static void add(Integer a, Long b){ System.out.println("All wrapper"); } public static void main(String[] args) { int a = 10; Integer b = 10; long c = 9; Long d = 9l; add(a,c); add(a,d); add(b,c); add(b,d); } } В этот момент я получаю ошибку компиляции при третьем вызове метода add, говоря: Метод неоднозначен для типа Error. Почему это так? Каковы правила определения того, какой вызов метода будет работать? Что именно происходит в следующем случае? Я чувствую, что четвертый перегруженный метод добавления должен работать. Пожалуйста, помогите мне понять концепцию, стоящую за этим.
t

theimpatientcoder

6 лет назад

Ответов: 1

2022 WebDevInsider