家常豆腐的做法,求求你别再写 bug 了,老猿通知你防止空指针的 5 个事例!,木耳炒鸡蛋

空指针是咱们 Java 开发人员常常遇到的一个根本反常,这是一个极端遍及但好像又无法彻底治愈的问题。

本文,栈长将带你了解什么是空指针,还有怎么有用的防止空指针。

什么是空指针?

当一个变量的值为 null 时,在 Java 里边表明一个不存在的空目标,没有实践内容,没有给它分配内存,null 也是目标成员变量的默许值。

所以,一个目标假如没有进行初始化操作,这时分,假如你调用这个目标的办法或许变量,就会呈现空指针反常。

如下面示例会发作空指针反常:

Object object = null;
String string = object.toString();

image.png

从类结构图来看,空指针它是归于运行时反常 RuntimeException 的子类,它不是捕获型的,只要在程序运行时才或许报出来,并且会形成程序中止。

怎么防止空指针?

下面说几个空指针的几个最常见的事例及解决之道。

1、字符串比较,常量放前面

if(status.equals(SUCCESS)){

}

这个时分 status 或许为 null 形成空指针反常,应该把常量放前面,就能防止空指针反常。

if(SUCCESS.equals(status)){

}

这个应该在各种开发标准里边都会说到,也是最根底的。

2、初始化默许值

在目标初始化的时分给它一个默许值或许默许结构完成,如:

User user = new User();
String name = StringUtils.EMPTY;

3、回来空调集

在回来一个调集的话,默许会是 null,一致标准回来一个空调集。

举个 List 比如,如:

public List getUserList(){
List list = userMapper.gerUserList();
return list == null ? new ArrayList() : list;
}

这样接收方就不必忧虑空指针反常了,也不会影响事务。

4、断语

断语是用来查看程序的安全性的,在运用之前进行查看条件,假如不契合条件就报反常,契合就持续。

Java 中自带的断语关键字:assert,如:

assert name == null : "称号不能为空";

输出:

Exception in thread "main" java.lang.AssertionError: 称号不正确

不过默许是不发动断语查看的,需求要带上 JVM 参数:-enableassertions 才干收效。

Java 中这个用的很少,主张运用 Spring 中的,更强壮,更便利好用。

Spring中的用法:

Assert.notNull(name,"称号不能为空");

5、Optional

Optional 是 JDK 8 新增的新特性,再也不必 != null 来判别了,这个在一个目标里边的多个子目标接连判别的时分十分有用。

这儿大约介绍了 5 种,其实还有更多,怎么防止空指针,一是要注意代码编写标准,二是要进步代码素质。