Unwrap an Optional only if it is present

后端 未结 2 1716
执念已碎
执念已碎 2021-02-14 01:27

So currently I have

String uri = website.getUri();
Optional pageDetail = webClient.getDetailOfUri(uri);
String displayName;
String description;         


        
2条回答
  •  醉梦人生
    2021-02-14 02:25

    You could write:

    String uri = website.getUri();
    Optional pageDetail = webClient.getDetailOfUri(uri);
    String displayName = pageDetail.map(PageDetail::getName).orElse(uri);
    String description = pageDetail.map(PageDetail::getDescription).orElse("");
    

    If the Optional is not set, map will return the same unset Optional. Otherwise, it will map it to an Optional containing the result of getName(). Then we can use orElse to return a default value when the Optional is unset.

提交回复
热议问题