public class test {
test(double[] a)
{
System.out.println("in double");
}
test(Object a)
{
System.out.println("in object");
}
public static void main(String args[])
{
new test(null);
}
}
В приведенном выше коде я передаю null
в качестве аргумента конструктора. Поскольку null
может быть любым, приведенный выше код компилируется отлично. Когда я запускаю код, я ожидал, что он напечатает в объекте, но он печатает в двойном В чем причина этого?Почему Java предпочитает называть двойной конструктор?
Примечание связанный вопрос не может быть дубликатом, потому что этот вопрос связан с примитивным типом данных против Object
Похоже, что используется 'double', потому что это первый определенный конструктор. Вы пробовали сначала определить конструктор с параметром «Объект»? –
@KErlandsson извините, я не думаю, что это дубликат связанного вопроса. – rocking
@rocking double [] не является примитивным. Массивы - это объекты. 'double [] instanceof Object == true'. –