Java程序员工作中遇到最多的谬误就是空指针异样,无论你如许仔细,一不留神就从代码的某个中央冒出NullPointerException,真是令人头疼。

到底怎么防止空指针异样?看完这篇文章,能够帮忙你。

1. 对象设置默认值

Object obj = new Object();String str = "";

2. 字符串比拟,常量放后面

if ("success".equals(status)) {    // doSomething()}

3. 办法返回空集合

public List<User> getUsers() {    List<User> users = userService.selectList();    return users == null ? Collections.emptyList() : users;}

4. 转String,用valueOf()办法代替toString()

User user = null;String str = String.valueOf(user);

valueOf()办法源码是:

public static String valueOf(Object obj) {    return (obj == null) ? "null" : obj.toString();}

5. 判空,用工具库

apache commons是最弱小的,也是应用最宽泛的工具类库,用它就行了。

// 字符串判空String str = null;boolean isEmpty = StringUtils.isEmpty(str);// 判空的时候,会主动疏忽空白字符,比方空格、换行boolean isBlank = StringUtils.isBlank(str);// 汇合判空List<String> list = null;boolean isEmpty = CollectionUtils.isEmpty(list);

6. 用注解帮你查看

class User {    @NotNull    private Integer id;    @NotBlank    private String name;}

7. 防止不必要的拆箱

// 上面会抛异样Integer id = null;int newId = id;

8. 数据库字段要设置默认值

数值类型的字段设置默认0,varchar类型字段设置默认 '' 空串。

防止取出来应用的时候,还要进行判空。

9. 应用Java8的Optional

// 获取用户姓名,上面的代码,不会报异样User user = null;Optional<User> optUser = Optional.ofNullable(user);String name = optUser.map(User::getName).orElse(null);

你感觉怎么样?还有哪些方法能防止空指针异样?