【发布时间】:2012-01-19 21:28:25
【问题描述】:
这是一个简单的代码
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 而不是 Foo?
我知道为什么编译器选择 Bar 而不是 Foo(因为从 foo 到 bar 以及从 bar 到 foo 的转换,反之亦然)。
但是该方法如何知道这个 null 来自 Bar 而不是 Foo?
null 是否包含有关分配给的对象的一些信息?
【问题讨论】:
-
Null 不能是 Bar 或 Foo。它是空的。
标签: java reference null instance