所以我有以下重载方法:
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"
}
我知道变量arity方法在方法解析阶段的优先级最低,所以在这种情况下,如果我打电话foo((short)2, (short)4);
,我会得到“Calling int-int”。
但是,如果我将方法 (3) 更改为foo(short a, double b)
,则选择变量 arity 方法!(Java 7)。谁能解释一下?