如何用Java决定构造函数调用?

时间:2016-02-28 08:05:04

标签: java

我有一个Java类,其中有两个参数化构造函数

public class TestApplication {

    TestApplication(Object o)
        {
            System.out.println("Object");
        }

        TestApplication(double[] darray)
        {
            System.out.println("Array");
        }

        public static void main(String[] args)
        {
            new TestApplication(null);
        }
}

当我运行这个程序时,我输出为" Array"。为什么Object构造函数不运行?

1 个答案:

答案 0 :(得分:3)

构造函数重载分辨率的行为与方法重载分辨率相同。当两个构造函数匹配传递的参数时,将选择具有更具体参数类型的构造函数。

null可以同时分配给double[]Object,因为两者都是引用类型,但数组是比Object更具体的类型(因为数组)是Object类的子类,因此new TestApplication(null)会触发TestApplication(double[] darray)构造函数。