Este es un código simple¿Es una referencia nula una instancia de una clase?
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");
}
}
Mi pregunta es: ¿Cómo sabe que el Java nula pasada es Bar
y no Foo
? Sé por qué el compilador elige Bar y no Foo (porque hay una conversión de foo a bar y de bar a foo y no viceversa). Pero, ¿cómo sabe el método que este nulo proviene de Bar y no de Foo? ¿contiene null información sobre el objeto al que está asignado?
Null no puede ser Bar o Foo. Es nulo –