注意:此问题已被标记为Ambiguous varargs methods的重复项,但不是重复项。该问题解决了Integer
/ int
之间的混淆(此处为Double
/ double
)。但是我的问题涉及double
/ double
的不足之间的歧义性,而对于使用Double
时的模糊性 感到困惑。
在以下情况下,为什么Java基于Double
而不是double
进行歧义消除?
public class Ambiguity {
void foo(double d, Object... o) {}
void foo(Object... o) {}
void bar() {
foo(1.0d, "Hi"); // complains about ambiguity
}
void foo2(Double d, Object... o) {}
void foo2(Object... o) {}
void bar2() {
foo2(1.0d, "Hi"); // fine
}
}