您的位置:

如何合理判空数组

一、基础判空方法

经常有这样的需求:在开发中需要对数组进行判空来避免出现空指针异常。最基础的判空方法就是判断数组是否为null或数组长度是否为0。


public static boolean isEmpty(Object[] array) {
    return array == null || array.length == 0;
}

调用方法如下:


Object[] array = null;
boolean isEmpty = isEmpty(array);
System.out.println(isEmpty); //输出 true

或者:


Object[] array = new Object[0];
boolean isEmpty = isEmpty(array);
System.out.println(isEmpty); //输出 true

二、使用Guava库来判空

Guava库中提供了一种更简洁的方法来判断数组是否为空。使用一个简单的方法串联起来即可:


public static boolean isEmpty(Object[] array) {
    return array == null || array.length == 0;
}

boolean isEmpty = Objects.equal(array, null) || array.length == 0;

调用方法同上,输出结果也是 true。

三、判空封装类

为了不重复写判断数组是否为空的方法,我们可以将其封装成一个工具类,方便项目中复用。


public class ArrayUtils {

    public static boolean isEmpty(Object[] array) {
        return array == null || array.length == 0;
    }
}

调用方法如下:


Object[] array = null;
boolean isEmpty = ArrayUtils.isEmpty(array);
System.out.println(isEmpty); //输出 true

或者:


Object[] array = new Object[0];
boolean isEmpty = ArrayUtils.isEmpty(array);
System.out.println(isEmpty); //输出 true

四、Java 8的判空方式

在Java 8中,可以使用Stream API来判断数组是否为空:


Optional.ofNullable(array)
        .map(Arrays::stream)
        .orElseGet(Stream::empty)
        .findFirst()
        .isPresent();

调用方法同上。

五、总结

在开发中,判断数组是否为空是一个很常见的需求。我们可以根据具体情况灵活运用基础方法、Guava库、封装类和Java 8的方法来进行判空。