Как 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);
    }
}

Правильный вывод - "двойной массив". Почему этот конструктор был выбран более конкретным, чем другой, когда оба могут принимать ноль?

Ответы на вопрос(2)

Ваш ответ на вопрос