Это простой код
class Foo {
}
class Bar extends Foo {
}
public class Main {
public static void main(String[] args) throws Exception {
fn(null);
}
static void fn(Foo f) {
System.out.println(f instanceof Foo ? "Foo" : "Bar");
}
}
Мой вопрос: как Java знает, что переданный null - это Bar
, а не ] Фу
?
Я знаю, почему компилятор выбирает Bar, а не Foo (потому что есть преобразование из foo в bar и из bar в foo, а не наоборот).
Но как метод узнает, что этот null исходит от Bar, а не от Foo?
содержит ли null некоторую информацию об объекте, которому назначен?