使用变量参数的方法重载(varargs)
我很惊讶看到这个代码的输出:
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");
}
}
出现一条错误消息。
为什么第一个代码运行良好,但第二个代码给出错误?