我知道在基本数据类型的情况下的自动类型提升概念。但是在引用数据类型的情况下,我有下面的代码,它完美地工作。为什么对象类不是空值
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以外的语言? –