0

谁能向我解释为什么 Java 选择第二个重载而不是第一个?

public static void foo (int a, double b, double...c) {}
public static void foo (double...a) {}
public static void bar ()
{
    // this is the second
    foo(1);
}

我认为当我1作为参数传递时,Java 会选择第一个参数,因为int它比double?

谢谢

4

1 回答 1

5

第二种方法是唯一可以匹配的。你只有 1 个论点。第一个foo至少需要两个: anint和 a double,因此无法匹配。

第二个foo匹配,因为任何数量的数字都可以匹配。Java 将通过方法调用转换将您隐式提升int 1为 adouble以便它可以匹配。

于 2013-10-17T20:06:39.880 回答