美文网首页
java8新特性之Optional类

java8新特性之Optional类

作者: 糯米团子123 | 来源:发表于2022-08-02 18:08 被阅读0次
    1. Optional类的作用
      java.util.Optional类是一个包含null值的容器对象,可以代替xx!=null使用。更加优雅的进行判空处理。

    2. 常用方法
      2.1 of
      为value创建一个Optional对象,如果value为null,会报出NullOpinterException异常。


      of.png

      2.2 ofNullable
      为value创建一个Optional对象,允许为null。


      ofNullable.png

      2.3 isPresent
      判断当前value是否为null,如果不为null则返回true,否则返回false。


      isPresent.png

      2.4 ifPersent
      如果不为null就执行函数接口中的内容。


      ifPersent.png

      2.5 get
      返回当前值,如果为null则报异常


      get.png

      2.6 orElse
      返回当前值,如果为null则报异常


      orElse.png
      2.7 orElseGet
      和OrElse类型,只是orGetElse支持函数式接口来生成other值
      orElseGet.png

      2.8 orElseThrow
      如果有值则返回,没有值用函数是接口抛出生成的异常


      orElseThrow.png

      2.9 empty
      创建一个空的Optional对象,没有任何参数赋值;


      empty.png
    3. 使用示例

    Optional<Object> optionalEmpty = Optional.empty(); // 创建一个空的Optional类
    
    String str = "Hello World";
    Optional<String> optionalStr = Optional.of(str); // str不能为空
    
    Optional<String> optionalStr = Optional.ofNullable(str); // str可以为空
    
    boolean present = Optional.ofNullable(null).isPresent(); // present为false
    
    Optional.ofNullable("hello").ifPresent(System.out::println); // 输出hello
    Optional.ofNullable(null).ifPresent(System.out::println); // 什么也不输出
    
    String str = Optional.ofNullable("hello").get(); // str为hello
    Object o = Optional.ofNullable(null).get(); // 抛出异常:java.util.NoSuchElementException: No value present
    
    String s1 = Optional.ofNullable("hello").orElse("string is null"); // s1为hello
    Object s2 = Optional.ofNullable(null).orElse("string is null"); // s2为string is null
    
    // 假设有一个User自定义类型:
    User user = null;
    User ansUser = Optional.ofNullable(user).orElse(new User("张三", 11, "男", 1234)); // 输出为new User("张三", 11, "男", 1234)对象
    
    
    String s1 = Optional.ofNullable("hello").orElse("string is null"); // s1为hello
    Object s2 = Optional.ofNullable(null).orElse("string is null"); // s2为string is null
    
    // 假设有一个User自定义类型:
    User user = null;
    User ansUser = Optional.ofNullable(user).orElse(new User("张三", 11, "男", 1234)); // 输出为new User("张三", 11, "男", 1234)对象
    
    String str = Optional.ofNullable("hello").orElseGet(() -> "test"); // str为hello
    
    String s = null;
    String str = Optional.ofNullable(s).orElseThrow(RuntimeException::new); // 抛出异常:java.lang.RuntimeException
    
    
    
    

    相关文章

      网友评论

          本文标题:java8新特性之Optional类

          本文链接:https://www.haomeiwen.com/subject/xfsrwrtx.html