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[]
inheritance自java.lang.Object
,因此更具体。
编译动态类型语言的挑战是如何实现一个运行时系统,该系统可以在编译程序之后选择最合适的方法或函数实现。 将所有变量视为对象类型的对象将无法有效工作。
因此,选择特定的Object
。