我知道在基本數據類型的情況下的自動類型提升概念。但是在引用數據類型的情況下,我有下面的代碼,它完美地工作。爲什麼對象類不是空值
public class Test4 {
void set(Object o) {
System.out.println("Inside Object");
}
void set(double[] a) {
System.out.println("Array");
}
public static void main(String[] args) {
new Test4().set(null);
}
}
它給出輸出數組。
但是,如果在地方對象O的,如果我們有任何其他的類,那麼這將顯示編譯時錯誤的方法是不明確的類型TEST4
下面的代碼提供編譯時錯誤
public class Test4 {
/*void set(Object o) {
System.out.println("Inside Object");
}*/
void set(String s) {
System.out.println("String");
}
void set(double[] a) {
System.out.println("Array");
}
public static void main(String[] args) {
new Test4().set(null);
}
}
據我所知,每個引用數據類型(Class,Interface和Array)的默認值爲null。
那麼爲什麼上面的代碼工作在對象o的情況下。
在此先感謝
這是完全錯誤的。對象不是*和JavaScript var相同。這是完全合法的:'Object o = new Object();'和Object obj = null;'。它甚至編譯。也許你正在考慮Java以外的語言? –