Является ли пустая ссылка экземпляром класса?

Это простой код

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 некоторую информацию об объекте, которому назначен?

5
задан Sleiman Jneidi 13 November 2014 в 20:53
поделиться