Java教程

Optional的常用Api

本文主要是介绍Optional的常用Api,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Optional的常用Api

01 Api

  1. Optional.of()该方法的入参是一个非null值,如果该值为null,则抛出NullPointerException,不为Null则返回该值。

  2. Optional.ofNullable()非Null时返回该值,为null时返回一个Optional.empty()

  3. Optional.empty()通过构造方法返回一个空的Optional实例。

  4. boolean isPresent()判断optional实例是否有值,没值为false,有值为true

  5. ifPresentoptiona()l实例存在值时调用ifPresent中的内容

  6. orElse,orElseGet两者的作用是当入参是null时,匹配自定义默认值

  7. orElseThrow,当Optional中为空值时抛出异常

  8. map 映射,用法同Stream

  9. filter 过滤,用法同Stream

orElse,orElseGet的区别

区别:

  • orElse与orElseGet的区别是前者的入参是一个泛型T,后者是一个函数式方法的结果。

  • ofNullable中的值是null时,orElse/orElseGet中的内容会执行,否则不执行

 

02 测试用例

package com.saiyou.test;
​
import com.saiyou.entity.User;
import org.apache.poi.hssf.record.UserSViewBegin;
​
import java.util.Optional;
​
/**
 * @author : lyn
 * 技术点 :
 * @description:
 * @date : 2022/1/2 17:41
 */
public class OptionalTest {
    public static void main(String[] args) {
​
        test7();
    }
​
    /**
     * Optional.of
     * 该方法的入参是一个非null值,如果该值为null,则抛出NullPointerException,不为Null则返回该值。
     */
    private static void test1() {
        // Optional.of(null);
        //入参为null时抛出NullPointerException
        Optional<String> result = Optional.of("value");
        System.out.println(result.get());
        //非null时返回该值value
    }
​
    /**
     * Optional.ofNullable
     * 非Null时返回该值,为null时返回一个Optional.empty()
     */
    private static void test2() {
        Optional<Object> result = Optional.ofNullable(null);
        //为null时返回一个Optional.empty()
    }
​
    /**
     * Optional.empty()
     * 通过构造方法返回一个空的Optional实例。
     */
    private static void test3() {
        //通过 boolean isPresent()判断optional实例是否有值,没值为false,有值为true
        Optional.empty().isPresent();
        //没值为false
        System.out.println(Optional.ofNullable("value").isPresent());
        //有值为true
    }
​
    /**
     * Optional.ifPresent
     * 实例存在值时调用ifPresent中的内容
     */
    private static void test4() {
        //Optional.empty().ifPresent(value-> System.out.println(value));
        //optional没值时不执行 ifPresent()里的代码
        Optional.ofNullable("value").ifPresent(System.out::println);
        //有值时执行 结果:value
    }
​
    /**
     * orElse,orElseGet两者的作用是当入参是null时,匹配自定义默认值
     * 区别:
     * orElse与orElseGet的区别是前者的入参是一个泛型T,后者是一个函数式方法的结果。
     * ofNullable中的值是null时,orElse/orElseGet中的代码会执行
     * 否则不执行
     */
    private static void test5() {
        String str = null;
        String str1 = "张三";
        str = Optional.ofNullable(str).orElse(str1);
        String str2 = "李四";
        str = Optional.ofNullable(str).orElse(str2);
        System.out.println(str);
        //结果:张三
        str = null;
        str = Optional.ofNullable(str).orElseGet(() -> str2);
        System.out.println(str);
        //结果:李四
    }
​
    /**
     * orElseThrow
     * 当Optional中为空值时抛出异常
     */
    private static void test6() {
        String value = "value";
        value = Optional.ofNullable(value).orElseThrow(() -> new RuntimeException("参数为空!"));
        System.out.println(value);
        //结果: value
​
    }
​
    /**
     * map 映射,用法同Stream
     * filter 过滤,用法同Stream
     */
    private static void test7() {
        User user = new User();
        user.setName("张三");
        Optional.ofNullable(user).map(User::getName).ifPresent(System.out::println);
        //结果: 张三
    }
}

03 资料参考

https://blog.csdn.net/weixin_42313773/article/details/118192675

https://bbs.csdn.net/skill/java/java-200100112c1048058e39283469c5a1c2

 

 

 

 

 

这篇关于Optional的常用Api的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!