侧边栏壁纸
  • 累计撰写 38 篇文章
  • 累计创建 25 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

【Java8】Optional

michloas
2023-02-17 / 0 评论 / 1 点赞 / 47 阅读 / 3534 字 / 正在检测是否收录...

optional 类

java.util.Optional<T>类是一个封装了Optional值的容器对象,Optional值可以为null,如果值存在,调用isPresent()方法返回true,调用get()方法可以获取值。

Optional类包含的方法

of

of方法通过工厂方法创建Optional类。需要注意的是,创建对象时传入的参数不能为null。如果传入参数为null,则抛出NullPointerException 。

        Optional<Object> objectOptional1 = Optional.of("1234");
        Optional<Object> objectOptional = Optional.of(null);

ofNullable

ofNullable与of方法相似,唯一的区别是可以接受参数为null的情况。示例如下:

        Optional<Object> objectOptional1 = Optional.of("1234");
        Optional<Object> objectOptional = Optional.ofNullable(null);
        System.out.println("-------" + objectOptional1);
        System.out.println("=======" + objectOptional);

isPresent

值存在返回true,否则返回false。

Optional<Object> objectOptional1 = Optional.of("1234");
        Optional<Object> objectOptional = Optional.ofNullable(null);
        System.out.println("-------" + objectOptional1);
        System.out.println("=======" + objectOptional);
        if (objectOptional1.isPresent()){
            System.out.println(objectOptional1.get());
        }

ifPresent

如果Optional实例有值则为其调用consumer,否则不做处理

        Optional<Object> objectOptional = Optional.of("1234");
        System.out.println("-------" + objectOptional);
        objectOptional.ifPresent(System.out::println);

输出:

-------Optional[1234]
1234

map

如果有值,则对其执行调用mapping函数得到返回值。如果返回值不为null,则创建包含mapping返回值的Optional作为map方法返回值,否则返回空Optional。

        Optional<String> objectOptional = Optional.of("Sddd");
        Optional<String> stringOptional = objectOptional.map(item -> item.toLowerCase());
        System.out.println(stringOptional.orElse("no value"));

flatMap

        Optional<String> objectOptional = Optional.of("Sddd");
        Optional<String> stringOptional = objectOptional.flatMap(item -> Optional.of(item.toLowerCase()));
        System.out.println(stringOptional);

输出:

Optional[sddd]
1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区