如果存在则如何返回对象,否则返回可选空

时间:2019-11-28 10:57:04

标签: java spring optional

我有一个对象,我正在通过rest调用进行检索。我需要一个对象。

final Optional<A> aResponse = Optional.ofNullable(restTemplate.getForObject(uri, A.class));

在类A中,它内部有一个B类型的对象。无论出于何种原因,此对象都可以为null。

我试图尽可能安全地查询它,以免出现空指针异常。 我尝试这样做:

  final Optional<B> bType = aResponse.map(A::getB)
           .orElseGet(() -> {
        return Optional.empty();
     });

但是它似乎不起作用。它显示以下消息:Required B but empty was inferred to Optional<T> no instances.

1 个答案:

答案 0 :(得分:5)

您不必致电orElseGet,只需:

final Optional<B> bType = aResponse.map(A::getB);

map如果其实例为空,则已经返回Optional

map的Javadoc:

  

返回:一个Optional,它描述了将映射函数应用于此Optional的值的结果(如果存在值),否则为空Optional