• 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 接口生成的异常

    《手掌与疾病》

  • 相关阅读:
    TCN代码详解-Torch (误导纠正)
    数据分析三剑客之一:Pandas详解
    Java毕业设计论文基于java+ssh+mysql实现的美食网站项目源代码
    PROFINET 模拟器使用教程
    uniapp 小程序优惠劵样式
    手写Promise完整介绍
    一文学会Spring JDBC 使用
    yolov8缺陷检测改进步骤
    UVM项目实战(1)
    【华为OD机试python】告警抑制【2023 B卷|100分】
  • 原文地址:https://blog.csdn.net/kan_Feng/article/details/126878576