• 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

  • 相关阅读:
    mysql同步之otter/canal环境搭建完整详细版
    Linux安装aria2
    mysql多源复制(多主一从)配置
    分布式调度框架TBSchedule使用方法
    hbase shell插入根据条件查询数据
    hive内部表&外部表介绍
    Canal( 增量数据订阅与消费 )的理解及应用
    tidb入门
    ES命令
    java8新特性
  • 原文地址:https://www.cnblogs.com/q1359720840/p/15790402.html
Copyright © 2020-2023  润新知