在 Go 中,只要该指针永远不会被取消引用,就可以在空指针上调用方法:
type empty struct{}
func (e *empty) Allocated() bool { return e != nil }
(对于可运行的代码,请单击此处)
然而,在 Java 中,在空指针上调用方法,即使该方法从未取消引用任何成员变量,仍然会导致空指针异常:
class Test {
public boolean Allocated() { return this != null; }
}
有谁知道为什么存在这种行为?它有什么好处吗?想法?