谁能向我解释为什么 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
更具体?
谢谢
最佳答案
第二种方法是唯一可以匹配的方法。你只有 1 个参数。第一个 foo
至少需要两个:一个 int
和一个 double
,因此无法匹配。
第二个 foo
匹配,因为可以匹配任意数量的数字。 Java 会隐式地将您的 int
1
提升为 double
,以便它可以通过方法调用转换进行匹配。
关于java - 为什么 Java 选择这个重载而不是其他重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19436196/