Java程序员怎么避免空指针异常?看完这篇文章再也不用担心了

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);

你觉得怎么样?还有哪些办法能避免空指针异常?

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值