Код ниже действительно меня смутил. Результатом является «int array», но если я приведу вторую функцию Confusing, выход будет «Obejct». Интересно, что на Java действительно означает нуль.«Нуль» относится к любому типу?
А также почему Смешение класс создается с вызовом второй конструктор, а не первый конструктор
Почему компилятор будет вызывать этот конструктор, как это всегда вызывает наименьшую расширение класса
public class Confusing {
public Confusing(Object o){
System.out.println("Obejct");
if(o instanceof Object)
System.out.println("Object");
}
public Confusing(int[] iArray){
System.out.println("int array");
if(iArray instanceof int[])
System.out.println("Array");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Confusing(null);
}
}
http://stackoverflow.com/questions/2707322/what-is -null-in-java –
Null ничего не значит, вы можете ничего пропускать вместо какого-либо объекта, но редко это хорошая идея, если метод не ожидает этого. –
Почему вы должны проверить, является ли это 'instanceof'? Разве «type hinting» не делает этого? –