java 返回www.example.com中的Optional.empty而不是Optional[null]Optional.map

pftdvrlh  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(127)

在下面的代码中,如果customerInfo不存在,它将返回Optional[null],因此customerInfo.get(name).textValue()将返回一个NPE。有没有办法让map(data -> data.get("customerInfo"))返回Optional.empty()而不是Optional[null]?这里Optional[null]中的null是一个NullNode对象。

Optional<JsonNode> orderData = getOrderData() // API Call

  orderData.map(data -> data.get("customerInfo"))
  .map(customerInfo -> customerInfo.get(name).textValue());
mu0hgdu0

mu0hgdu01#

您似乎误解了您遇到的问题。NullPointerException的发生是因为customerInfo.get(name)为null,因此customerInfo.get(name).textValue()试图在null引用上调用textValue()方法。
要解决这个问题,您可以将对map的调用拆分为 * 两个 * 调用,如下所示:

orderData.map(data -> data.get("customerInfo"))
  .map(customerInfo -> customerInfo.get(name))
  .map(customer -> customer.textValue());

这样,如果customerInfo.get(name)为null,那么得到的Optional将为空,并且最后一个lambda不会被执行。

相关问题