zoukankan      html  css  js  c++  java
  • Optional.ofNullable与ifPresent的代码搭配

    如果前面的判断不是null,则进行设置值。 一笔完成完美 ,额报错了,不适合多层直接调用。如果能接住就好了。
    Optional.ofNullable(skuMap.get(esteem.getRelationId()).getSpuId()).ifPresent(secondaryMenuItemsVo::setRelationId);


    public void OptTest(User user) {

    // 第一种方式:存在空指针的风险,只要与一个对象为空就会空指针
    String countryName = user.getAddress().getCountry().getCountryName();
    System.out.println( "第一种方式:" + countryName );

    // 第二种方式:各种if判断避免了空指针,但是if层级太深,代码冗长
    if (user != null) {
    Address address = user.getAddress();
    if (address != null) {
    Country country = address.getCountry();
    if (country != null) {
    String couName = country.getCountryName();
    System.out.println( "第二种方式:" + couName );
    }
    }
    }

    // 第三种方式:代码简洁,避免空指针,武林那一步为空都会返回默认值
    String counName = Optional.ofNullable( user )
    .map( User::getAddress )
    .map( Address::getCountry )
    .map( Country::getCountryName )
    .orElse( "china" );
    System.out.println( "第三种方式:" + counName );

    // 第三种方式:代码简洁,避免空指针,武林那一步为空都会返回自定义异常
    String countryNameEx = Optional.ofNullable( user )
    .map( User::getAddress )
    .map( Address::getCountry )
    .map( Country::getCountryName )
    .orElseThrow( () -> new RuntimeException( "countryId is null" ) );
    System.out.println( "第四种方式:" + countryNameEx );
    }

    本文来自博客园,作者:三号小玩家,转载请注明原文链接:https://www.cnblogs.com/q1359720840/p/15790402.html

  • 相关阅读:
    大公司?小公司?
    git 学习笔记
    django学习笔记
    web servieces 学习小栗子
    python列表推导式
    什么叫事务,事务的特性
    监听问题汇总
    oracle数据库导入导出
    ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务--解决办法(转)
    目标修正
  • 原文地址:https://www.cnblogs.com/q1359720840/p/15790402.html
Copyright © 2011-2022 走看看