Я удивлен, увидев вывод этого кода:
public class File
{
public static void main(String[] args)
{
movie();
}
static void movie(double... x)
{
System.out.println("No varargs");
}
static void movie(int... x)
{
System.out.println("One argument");
}
}
Он выводит,
One argument
Почему это так?
Я думал, что этот код не будет компилироваться, потому что вызов movie()
является неоднозначным, но он отлично работает и выдает One argument
.
Если я изменю код на:
public class File
{
public static void main(String[] args)
{
movie();
}
static void movie(boolean... x) //Changed the parameter type to boolean from double
{
System.out.println("No varargs");
}
static void movie(int... x)
{
System.out.println("One argument");
}
}
Появляется сообщение об ошибке.
Почему первый код работает нормально, а второй дает ошибку?