所以這裏這個例子null作爲方法參數的類型是什麼?
public static void main(String[] args) {
new Stuff(null);
new Stuff("a");
new Stuff(1);
}
和類的東西被定義爲跟隨
public class Stuff {
Stuff(Object o){
System.out.println("object");
}
Stuff(String s){
System.out.println("string");
}
}
輸出是
string
string
object
怎樣的Java告訴null
是String
?如果我改變Stuff
到
public class Stuff {
Stuff(String s){
System.out.println("string");
}
Stuff(Integer o){
System.out.println("Integer");
}
}
我得到的編譯錯誤Stuff(null)
:
The constructore Stuff(String) is ambigous.
再次,爲什麼Java的 「決定」 null
是String
?
因爲String是所有其他中最接近'null'的字符串:「* Java編程語言使用選擇最具體方法的規則*」。 – Maroun
值得一提的是,'null'不是一個字符串,一個對象或一個整數。 (這只是他們的明顯缺乏)。 –
由於未生成註釋:http://stackoverflow.com/q/13033037/1864167 –