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

时间:2012-08-21 14:40:01

标签: 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时,这个构造函数被选择为比另一个更具体吗?

2 个答案:

答案 0 :(得分:17)

即使两个构造函数都可以接受nulldouble[] java.lang.Object继承,因此更具体。

答案 1 :(得分:1)

  

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

因此,选择Object以上的特定版本。