java8新特性之Optional类

2022-08-02  本文已影响0人  糯米团子123
  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



上一篇下一篇

猜你喜欢

热点阅读