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

Tlo*_*loz 1 java spring optional

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

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

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

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

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

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

Era*_*ran 5

您不必致电orElseGet,只需:

final Optional<B> bType = aResponse.map(A::getB);
Run Code Online (Sandbox Code Playgroud)

mapOptional如果被调用的实例为空,则已经返回。

的Javadoc map

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