Java中的空指针怎么处理?

createh53个月前 (03-06)技术教程22

#暑期创作大赛#

Java程序员工作中遇到最多的错误就是空指针异常,无论你多么细心,一不留神就从代码的某个地方冒出NullPointerException,令人头疼。

1. 对象设置默认值

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

2. 字符串比较,常量放前面

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

3. 方法返回空集合

public List getUsers() {
    List 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 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 optUser = Optional.ofNullable(user);
String name = optUser.map(User::getName).orElse(null);

相关文章

Java 判断对象是否所有属性为空,大家觉得这样写可以吗?

序言:在开发Excel数据导入的时候,后台拿到Excel中的数据并接收到List泛型集合中,发现有很多对象的属性全部为null,想通过代码将这些无效的数据给过滤掉,下面是过滤的具体操作。ObjectU...

java8之Optional 判空,简化判空操作

导语在没有用Optional判空之前,你是否也像下面的代码一样判空呢?如果是,请往下看,Optional 相对传统判空的优势。传统阶层判空为什么要用Optional,它到底是什么东西你也看到了上面的那...

「Java」一张图教会你关于null的几种处理方式(内附代码)

对于Java程序员来说,空指针一直是恼人的问题,我们在开发中经常会受到NullPointerException的蹂躏和壁咚。Java的发明者也承认这是一个巨大的设计错误。那么关于null,你应该知道下...

没用 Java 8,怎么优雅地避免空指针?

作者:汪小哥来源:https://blog.csdn.net/u012881904/article/details/68935009JDK 8 里面有 Optional ,如果你还在使用 JDK 7...

JavaScript 的 null 和 undefined 判断

null 和 undefined 在 JavaScript 是最常见的空问题。null 和 undefined 的定义JavaScript 的最初版本是这样区分的:null是一个表示"无"的对象,转为...