1

我正在开发下面的课程,当我执行下面的课程时,我得到以下结果..

public class Confusing {    
    private Confusing(Object o) {
        System.out.println("Object");
    }

    private Confusing(double[] dArray) {
        System.out.println("double array");
    }

    public static void main(String[] args) {
        new Confusing(null);
        // new Confusing((Object)null);
    }
}

输出 :-

double array

你能解释一下为什么控制台上的结果是双数组吗?

4

2 回答 2

1

使用最具体的适用过载。

在这种情况下,最具体的是双数组,因此您将“双数组”作为输出

于 2013-02-21T09:27:16.280 回答
1
 Confusing(null) 

方法调用转到最具体的方法

在这里它

private Confusing(double[] dArray)

因为double[]参考比通用Object参考更具体

于 2013-02-21T09:26:38.870 回答