Java如何选择使用哪个构造函数?

use*_*482 9 java

我无法理解以下程序的输出.

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

正确的输出是"双数组".当两个都可以接受null时,这个构造函数被选择为比另一个更具体吗?

das*_*ght 17

尽管这两个构造函数可以接受null,double[] 继承java.lang.Object,并因此更加具体.