Si tratta di un semplice codiceÈ un riferimento null un'istanza di una classe?
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");
}
}
La mia domanda è: come Java sa che il NULL passata è Bar
e non Foo
? So perché il compilatore sceglie Bar e non Foo (perché c'è una conversione da foo a bar e da bar a foo e non viceversa). Ma come saprebbe il metodo che questo null proviene da Bar e non da Foo? null contiene alcune informazioni sull'oggetto a cui è assegnato?
Null non può essere Bar o Foo. È nullo –