Java8中使用Optional处理null对象

 

  Optional 是一个容器对象,可以存储对象、字符串等值,当然也可以存储 null 值。Optional 提供很多有用的方法,能帮助我们将 Java 中的对象等一些值存入其中,这样我们就不用显式进行空值检测,使我们能够用少量的代码完成复杂的流程。

有如下方法:

                of() 方法,可以将值存入 Optional 容器中,如果存入的值是 null 则抛异常。

public static void main(String[] args) {
        // 传入正常值,正常返回一个 Optional 对象
        Optional<String> optional1 = Optional.of("hhhh");
        System.out.println(optional1);

        // 传入参数为 null,抛出 NullPointerException.
        Optional optional2 = Optional.of(null);
        System.out.println(optional2);


    }

  

  • ofNullable() 方法,可以将值存入 Optional 容器中,即使值是 null 也不会抛异常。
  •  // 传入正常值,正常返回一个 Optional 对象
            Optional<String> optional1 = Optional.ofNullable("hhhh");
            System.out.println(optional1);
            // 传入 null 参数,正常返回 Optional 对象
            Optional optional2 = Optional.ofNullable(null);
            System.out.println(optional2);
  • get() 方法,可以获取容器中的值,如果值为 null 则抛出异常。
  •   // 传入正常值,正常返回一个 Optional 对象,并使用 get 方法获取值
            Optional optional1 = Optional.ofNullable("hhh");
            System.out.println(optional1.get());
    
            // 传入参数为 null 生成一个 Optional 对象,并使用 get 方法获取值
            Optional optional2 = Optional.ofNullable(null);
            System.out.println(optional2.get());
    

     

  • orElse() 方法,可以获取容器中的值,如果值为 null 则返回设置的默认值。
  •  // 传入正常参数,获取一个 Optional 对象,并使用 orElse 方法设置默认值
            Optional optional1 = Optional.ofNullable("hhh");
            Object object1 = optional1.orElse("111");
            System.out.println("如果值不为空:"+object1);
    
            // 传入 null 参数,获取一个 Optional 对象,并使用 orElse 方法设置默认值
            Optional optional2 = Optional.ofNullable(null);
            Object object2 = optional2.orElse("111");
            System.out.println("如果值为空:"+object2);
    

      

     

     

     

  • isPresent() 方法,该方法可以判断存入的值是否为空。
  •   Optional optional1 = Optional.ofNullable("hhh");
            System.out.println("传入正常值返回:" + optional1.isPresent());
    
            // 传入参数为 null 生成一个 Optional 对象,并使用 isPresent 方法
            Optional optional2 = Optional.ofNullable(null);
            System.out.println("传入 null 值返回:" + optional2.isPresent());
    

  • …等等一些其它常用方法,参考
    • Oracle JDK API 参考文档

    https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html

    • 菜鸟教程-Java 8 Optional 类

    https://www.runoob.com/java/java8-optional-class.html

  •  

     

使用 Optional 可以帮助我们解决业务中,减少值动不动就抛出空指针异常问题,也减少 null 值的判断,提高代码可读性。

 

posted @ 2022-07-03 17:38  执笔写墨  阅读(518)  评论(0)    收藏  举报