java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java判断对象是否为空

一文详解Java如何优雅地判断对象是否为空

作者:孤蓬&听雨

这篇文章主要给大家介绍了关于Java如何优雅地判断对象是否为空的相关资料,在Java中可以使用以下方法优雅地判断一个对象是否为空,文中通过代码介绍的非常详细,需要的朋友可以参考下

1. 前言

在实际项目中,我们经常需要对各种变量或对象进行判空校验。这是因为,如果不进行判空校验,当遇到空值时,可能会导致程序出现NullPointerException异常。这是一种常见的运行时异常,它会在试图访问或操作空对象引用时发生。为了避免这种异常的出现,我们需要在使用变量或对象之前,进行仔细的判空校验,以确保它们的值是有效的,或者它们不是空值。通过进行判空校验,我们可以更好地保证程序的稳定性和可靠性,避免潜在的错误和异常。

2. 如何判断为null

2.1 常用判断

判断一个对象是否为null有多种方式。除了你提到的java.util中的Objects.nonNull(obj)和hutool中的ObjectUtil,还有其他一些常见的方法。以下是这些方法的详细描述:

2.2 List的判空

像List这种比较特殊的在项目中可能不仅仅是判断非空了。对于List来说不等于null和List.size()不等于0是两回事,公司也有实习生常常有把这两个混淆的情况,list不等于null说明已经初始化了,堆内存中有一块属于它的地盘,而size为0说明还没往里面放东西,举个例子说就是不等于null代表我现在有个瓶子,size大于0说明我向瓶子里装水了。

来看一下源码:

public boolean isEmpty(List list) {
     if (list != null && list.size() > 0) {
         return false;
     } else {
         return true;
     }
 }

相当于判断瓶子里有没有水(前提是瓶子已经存在,若瓶子不存在,则会抛出NullPointerException异常)。

所以通常情况下会连用list != null && list.size > 0 来判断,或者直接使用HuTool中CollUtil工具的isEmpty。诸如此类的还有Set、Map等。

2.3 String的判空

这里还是用瓶子与水的概念,String为null时调用equals(String) 或 length() 等操作抛出 java.lang.NullPointerException。

private void test() {
    String str1 = null;
    //这里将抛出异常
    if (str1.equals("")) {
    }

    //这里将抛出异常
    if (str1.length() > 0) {
    }
}

针对字符串判空有以下几种方式:

1、大多数人使用的方法之一,直观,方便,但效率低下:

if(a == null || a.equals(""));

2、比较字符串长度,高效:

if(a == null || a.length() == 0);

3、Java SE 6.0 才刚刚开始提供,效率和方法二差不多:

if(a == null || a.isEmpty());

当然还可以使用org.apache.commons.lang.StringUtils工具。

StringUtils.isNotBlank(a);

该工具类中还有个isNotEmpty()方法,从注释可以很明显看出二者的差别

StringUtils.isNotEmpty(a);

2.4 Optional

Optional的出现就是用来防止NullpointException的。常见的方法有:

先看个常见的示例:

baseInfo类中有布尔类型的属性,是空返回false,不为空取其值,需要四行。

boolean blind = false;
if (null != baseInfo.getBlind()) {
    blind = baseInfo.getBlind();
}

当使用Optional时,一行搞定,非常的优雅。

boolean blind = Optional.ofNullable(baseInfo.getBlind()).orElse(false);

Java中的Optional 是一个可以为null的容器对象。如果值存在则isPresent()方法返回true。调用get()方法会返回该对象。

创建Optional对象的方式有三种:

Optional对象的使用场景主要是处理空指针异常的情况,相当于一个容器,当往里面存放对象时,如果对象为空(null),Optional会返回一个空的Optional实例,反之会返回一个非空的Optional实例。

以下是使用Optional对象的示例:

Optional<String> optional = Optional.ofNullable("test");  
optional.isPresent();           // true  
optional.get();                 // "test"  
optional.orElse("fallback");     // "test"  
  
optional.ifPresent((s) -> System.out.println(s.charAt(0)));     // "t"

以上代码中,首先创建了一个包含字符串"test"的Optional对象。然后使用isPresent()方法检查该值是否为null,使用get()方法获取该值。接下来使用ifPresent()方法检查值是否存在,如果存在则执行lambda表达式中的代码。在这个例子中,输出结果是"t"。

总结来说,Java中的Optional对象可以用于避免空指针异常的情况,它提供了一种更优雅、更简洁的方式来处理可能为空的值。

3. 总结

每种方法都有其适用的场景,链式编程也不例外。虽然它可以使代码更优雅,但可能会降低逻辑性和可读性。因此,在项目中使用时,需要根据具体情况慎重考虑。

到此这篇关于Java如何优雅地判断对象是否为空的文章就介绍到这了,更多相关Java判断对象是否为空内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文