Итак, вот этот пример
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
?