参见英文答案 >
Varargs Java Ambiguous Call 2
看到这段代码的输出感到惊讶:
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()的调用是不明确的,但它运行正常并输出一个参数.
如果我修改代码为:
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");
}
}
有错误信息.
为什么第一个代码运行正常,但第二个提供错误?