One*_*ree 0 java overload-resolution
任何人都可以向我解释为什么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);
}
Run Code Online (Sandbox Code Playgroud)
我认为当我1作为参数传递时,Java会选择第一个参数,因为int它更具体而不是double?
谢谢
第二种方法是唯一可以匹配的方法.你只有一个参数.第一个foo至少有两个必需:an int和a double,因此无法匹配.
第二个foo匹配因为任意数量的数字都可以匹配.Java将通过方法调用转换隐式地将您提升int 1到一个double可以匹配的位置.