所以这就是这个例子
public static void main(String[] args) {
new Stuff(null);
new Stuff("a");
new Stuff(1);
}
和类Stuff定义如下
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
?
答案 0 :(得分:19)
String
是Object
的子类,因此更具体。确定应选择哪种方法的完整算法在JLS。
中定义答案 1 :(得分:6)
因为String比Object更具体。在确定要使用哪种构造函数或方法时,Java总是尝试使用更具体的匹配。