返回

用if判空?拜托,Out了!这些判空手段,学完不再失误

后端

前言

相信不少小伙伴已经被Java的NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨, 有大佬说过“防止NPE,是程序员的基本修养。”

但是修养归修养,也是我们程序员的痛。通常,我们都会使用if (obj != null)这种方式来进行判空, 但是这种方式不仅繁琐,而且容易出错。

今天,我们就来聊聊除了if (obj != null)之外,还有哪些判空手段。

一、使用Objects.isNull()Objects.nonNull()

在Java 7中,引入了Objects类,其中提供了两个非常有用的方法:isNull()nonNull().这两个方法可以分别判断一个对象是否为null和不为null.

// 判断对象是否为null
if (Objects.isNull(obj)) {
    // 做一些事情
}

// 判断对象是否不为null
if (Objects.nonNull(obj)) {
    // 做一些事情
}

二、使用Optional

在Java 8中,引入了Optional类,它是一个可以包含一个非null值的容器。如果Optional对象包含一个值,则称其为“存在”(present),否则称其为“不存在”(empty)。

我们可以使用Optional类来避免空指针异常。

// 创建一个包含对象值的Optional对象
Optional<Object> obj = Optional.of(new Object());

// 判断Optional对象是否存在值
if (obj.isPresent()) {
    // 获取Optional对象中的值
    Object value = obj.get();

    // 使用value做一些事情
}

三、使用断言

断言是一个在Java中用于检查程序状态的机制。如果断言为假,则会抛出AssertionError异常。我们可以使用断言来检查对象是否为null.

// 检查对象是否为null
assert obj != null;

// 如果对象为null,则抛出AssertionError异常

四、使用三元运算符

三元运算符是一个在Java中用于进行条件判断的运算符。它可以用来代替if语句来进行判空。

// 使用三元运算符进行判空
String result = (obj != null) ? "对象不为null" : "对象为null";

五、使用lambda表达式

lambda表达式是Java 8中引入的一种新的语法特性。它可以用来简化代码,并使代码更具有可读性。我们可以使用lambda表达式来进行判空。

// 使用lambda表达式进行判空
List<String> list = new ArrayList<>();

// 过滤掉list中的空字符串
list.removeIf(str -> str == null);

结语

以上五种判空手段各有其优缺点,我们可以根据实际情况选择最适合的一种。

希望这篇文章能给大家带来一些帮助,也希望大家能养成良好的编程习惯,避免出现空指针异常。

同时,也欢迎大家在评论区分享自己的判空技巧,让我们一起进步!