2016-09-28 2 views
1

Почему приведенный ниже код дает ошибку компиляции «Метод show (Object []) неоднозначен для типа VarArgs« ?.Ошибка компиляции объекта vararg и int vararg

Ошибка в линейном шоу (10,20,30);

public class VarArgs { 
    public static void main(String[] args) { 
     show(10,20,30); 
    } 

    private static void show(Object... args){ 
     System.out.println("Object"); 
    } 

    private static void show(int... arry){ 
     System.out.println("Integer"); 
    } 
} 

JDK: jdk1.6.0_23

+0

Спасибо Tunaki. Не уверен, что это дубликат, потому что перегрузка выполняется с помощью int vararg с помощью Integer vaarg. Когда шоу (10,20,30) сделано, почему возникает путаница ?. С другой стороны, работает private static void show (Integer ... arry). –

ответ

1

Вы должны сначала прочитать this, а затем передать целочисленный массив вместо 3 Интс в шоу-метода.

То, что здесь происходит, является компилятором Java, автоматически включающим int в класс Integer, и поскольку класс Integer является подклассом класса Object, обе версии метода show() могут принимать show (int []), и, следовательно, компилятор бросает неоднозначную ошибку ,

+0

show (int []) не может отображать шоу (10,20,30). Также, если я изменяю второй метод на private static void show (Integer ... arry), он работает. –

+0

Я думаю, что вы неправильно поняли, show (int []) Я имею в виду вызов метода show с массивом int, поскольку он является параметром. – nitinsh99

+0

Для vararg, show (10,20,30) - массив, переданный, справа ?. Я думаю, что второй метод помещается в поле Integer, а затем расширен до Object. Не уверен, хотя. –

Смежные вопросы