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

    《手掌与疾病》

  • 相关阅读:
    DM8数据库版本升级
    Arduino WIFI智能小车 无线视频遥控小车(论文+程序+原理图+驱动+安装手册等)
    导致静脉炎的因素有哪些呢?
    奉劝不要在ElementPlus中使用el-table渲染大量树形结构数据
    JAVA计算机毕业设计电竞教育公司Mybatis+系统+数据库+调试部署
    大佬神作!Spring Security从应用到源码,这份手册都讲全了,已三刷
    DHTMLX JS Gantt Library 7.1.13
    【《C Primer Plus》读书笔记】第12章:存储类别、链接和内存管理
    phoenix安装
    C++基础——输入输出和缺省参数讲解
  • 原文地址:https://blog.csdn.net/kan_Feng/article/details/126878576