我有以下重载方法:
private static void foo(short... a)
{
System.out.println("Calling var-len");
}
private static void foo(int a, int b)
{
System.out.println("Calling int-int");
}
private static void foo(int a, double b) //(3)
{
System.out.println("Calling int-double");
}
private static void main (String[] args)
{
foo((short)2, (short)5); //This one outputs "Calling int-int"
}
我知道可变元方法在方法解析阶段中具有最低优先级,因此在这种情况下,如果我调用
foo((short)2, (short)4);
,我会得到"Calling int-int"。但是,如果我将方法(3)更改为
foo(short a, double b)
,则会选择可变元方法!(Java 7)。有人能解释一下吗?