Неоднозначность функции переменного аргумента

   public static void main(String[] args) {
       System.out.println(fun(2,3,4));
     }
   static int fun(int a,int b,int c)
   {
     return 1;
   }
   static int fun(int ... a)
   {
     return 0;  
   }

Вывод: } статические int fun (int a, int b, int c) {return 1; } статический int fun (int ... a) {return 0; ...

   public static void main(String[] args) {
       System.out.println(fun(2,3,4));
     }
   static int fun(int a,int b,int c)
   {
     return 1;
   }
   static int fun(int ... a)
   {
     return 0;  
   }

Вывод: } статические int fun (int a, int b, int c) {return 1; } статический int fun (int ... a) {return 0; ...

   public static void main(String[] args) {
       System.out.println(fun(2,3,4));
     }
   static int fun(int a,int b,int c)
   {
     return 1;
   }
   static int fun(int ... a)
   {
     return 0;  
   }

Вывод: 1

Вопрос: В приведенном выше случае, почему функция fun выбирает 1-ю функцию, а не вторую. На каком основании выполняется выбор, если нет способа определить, какое развлечение пользователь действительно хотел вызвать?

7
задан Emil 27 September 2010 в 11:03
поделиться