注意:这个问题已被标记为Ambiguous varargs 方法的重复,但它不是重复的。Integer该问题涉及/之间的混淆int(这里是Double/ double)。但是我的问题涉及double/lack of之间的歧义,以及在使用时缺乏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
}
}