我有一个对象,我正在通过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.
答案 0 :(得分:5)
您不必致电orElseGet
,只需:
final Optional<B> bType = aResponse.map(A::getB);
map
如果其实例为空,则已经返回Optional
。
map
的Javadoc:
返回:一个Optional,它描述了将映射函数应用于此Optional的值的结果(如果存在值),否则为空Optional