• java8 Optional 使用模式


    1. 声明一个空的Optional

    Optional<Integer> obj = Optional.empty(); 

    2. 依据一个非空值创建Optional

    Optional<Integer> object = Optional.of(1);

    3. 可接受nullOptional

    Optional<Integer> object = Optional.ofNullable(1); 

    4. 使用 map Optional 对象中提取和转换值

    1. Optional<User> user = Optional.ofNullable(new User());
    2. Optional<String> userName = user.map(User::getUserName);
    3. class User {
    4. private String userName;
    5. private Integer age;
    6. public String getUserName() {
    7. return userName;
    8. }
    9. public void setUserName(String userName) {
    10. this.userName = userName;
    11. }
    12. public Integer getAge() {
    13. return age;
    14. }
    15. public void setAge(Integer age) {
    16. this.age = age;
    17. }
    18. }

    5. 使用 flatMap 链接 Optional 对象

    1. Optional<User> user = Optional.ofNullable(new User());
    2. String color = user.flatMap(User::getApple)
    3. .map(Apple::getColor).
    4. orElse("");
    5. class User {
    6. private String userName;
    7. private Integer age;
    8. private Optional<Apple> apple;
    9. public String getUserName() {
    10. return userName;
    11. }
    12. public void setUserName(String userName) {
    13. this.userName = userName;
    14. }
    15. public Integer getAge() {
    16. return age;
    17. }
    18. public void setAge(Integer age) {
    19. this.age = age;
    20. }
    21. public Optional<Apple> getApple() {
    22. return apple;
    23. }
    24. public void setApple(Optional apple) {
    25. this.apple = apple;
    26. }
    27. }
    28. class Apple {
    29. private String color;
    30. public String getColor() {
    31. return color;
    32. }
    33. public void setColor(String color) {
    34. this.color = color;
    35. }
    36. }

    6. 使用 filter 剔除特定的值

     Optional<User> userName = user.filter(u -> "xiaoming".equals(u.userName));

    O

    Optional类的方法

    1. empty

    返回一个空的 Optional 实例

    2. filter

    如果值存在并且满足提供的谓词,就返回包含该值的 Optional 对象;否则返回一个空的 Optional 对象

    3. flatMap

    如果值存在,就对该值执行提供的 mapping 函数调用,返回一个 Optional 类型的值,否则就返

    回一个空的 Optional 对象

    4. get

    如果该值存在,将该值用 Optional 封装返回,否则抛出一个 NoSuchElementException 异常

    5. ifPresent

    如果值存在,就执行使用该值的方法调用,否则什么也不做

    6. isPresent

    如果值存在就返回 true,否则返回 false

    7. map

    如果值存在,就对该值执行提供的 mapping 函数调用

    8. of

    将指定值用 Optional 封装之后返回,如果该值为 null,则抛出一个 NullPointerException 异常

    9. ofNullable

    将指定值用 Optional 封装之后返回,如果该值为 null,则返回一个空的 Optional 对象

    10. orElse

    如果有值则将其返回,否则返回一个默认值

    11. orElseGet

    如果有值则将其返回,否则返回一个由指定的 Supplier 接口生成的值

    12. orElseThrow

    如果有值则将其返回,否则抛出一个由指定的 Supplier 接口生成的异常

    《手掌与疾病》

  • 相关阅读:
    MD5 绕过第三式:ffifdyop
    计算机网络期末复习习题总结
    【Vue】06 计算属性 侦听属性
    7个最佳开源免费库存/仓库管理系统(WMS)
    b站江科大stm32笔记(持续更新)
    极坐标和直角坐标的积分转换
    ATA-8035射频功率放大器在通信领域的主要应用
    nginx-location和proxy_pass的url拼接
    云计算(Docker)
    个人论坛系统的测试用例
  • 原文地址:https://blog.csdn.net/kan_Feng/article/details/126878576