在日常编码中,有个经典的 Java 空指针(NULL)调用如下:
public Employee getByName(String name){
int id = database.find(name);
if (id == 0) {
return null;
}
return new Employee(id);
}
那么这段方法有什么问题?这个方法的最大问题就是有可能会返回 NULL 对象。空指针( NULL)问题在面向对象编程角度上说是个很严重的问题,所有面对对象编程的过程中都会碰 到类似的问题。甚至 Tony Hoare 向全 世界道歉,忏悔他曾经发明了「空指针」这个玩意。
I call it my billion-dollar mistake. It was the invention of the null reference in 1965. I couldn’t resist the temptation to put in a null reference, simply because it was so easy to implement.
原来,在程序语言中加入空指针设计,其实并非是经过深思熟虑的结果,而仅仅是因为它很容易实现而已。这个设计是如此的影响深远,以至于后来的编程语言都不假思索的继承了这一设计,这个范围几乎包括了目前业界所有的流行的编程语言。
对许多程序员来说,早就已经习惯了空指针的存在,就像日常生活中的空气和水一样。那么,空指针究竟有什么问题?
额外的错处处理
当然,有经验的编码人员自然会时刻意识到空指针问题的存在,那么有可能在编码的过程中加入额外的判断&#x