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); } } 

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

尽管两个构造函数都可以接受null ,但double[] inheritancejava.lang.Object ,因此更具体。

编译动态类型语言的挑战是如何实现一个运行时系统,该系统可以在编译程序之后选择最合适的方法或函数实现。 将所有变量视为对象类型的对象将无法有效工作。

因此,选择特定的Object