public String getStreetName( Province province ){ return Optional.ofNullable( province ) .map( i -> i.getCity() ) .map( i -> i.getDistrict() ) .map( i -> i.getStreet() ) .map( i -> i.getName() ) .orElse( "未找到该道路名" ); }
public String getStreetName( Province province ){ if( province != null ) { City city = province.getCity(); if( city != null ) { District district = city.getDistrict(); if( district != null ) { Street street = district.getStreet(); if( street != null ) { return street.getName(); } } } } return"未找到该道路名"; } PS:orElse或者orElseGet都是针对于ofNullable是否为空来进行的,为空执行orElse 区别是orElseGet可以传入一个接口,来定制逻辑。orElseThrow可以扔lambda异常表达式