git push приводит к летальному исходу: невозможно обновить базу URL из перенаправления:

Рассмотрим сигнатуры метода

public static void foo(int a)

и

public static void foo(Integer a)

. Перед боксом и распаковкой вызов foo(1) не был бы двусмысленным. Для обеспечения совместимости с более ранними версиями Java вызов остается недвусмысленным. Поэтому первая фаза разрешения перегрузки не позволяет запускать бокс, unboxing или переменную arity invocation, которые были введены одновременно. Вызов переменной arity - это когда вы вызываете метод varargs, передавая последовательность параметров для последнего аргумента (а не массива).

Однако разрешение method(1) для ваших сигнатур методов допускает бокс и распаковку потому что для обоих методов требуется вызов переменной arity. Поскольку бокс разрешен, применяются обе подписи. Обычно, когда применяются две перегрузки, выбирается наиболее конкретная перегрузка. Однако ни одна из ваших подписей не является более конкретной, чем другая (потому что ни int, ни Integer не являются подтипом другого). Поэтому вызов method(1) неоднозначен.

Вы можете сделать этот компилятор, передав вместо него new int[]{1}.

18
задан Vampire 7 May 2017 в 21:31
поделиться