为什么在Java中foo(double d,Object ...)和foo(Object ...)不明确,而foo(Double d,Object ...)和foo(Object ...)却不明确?

时间:2018-08-18 07:24:01

标签: java overload-resolution

注意:此问题已被标记为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
    }
}

0 个答案:

没有答案