我有以下内容:
Optional<Resource> updatedResource = update(resourceID, data);
if (updatedResource.isPresent()) {
return Response.status(Response.Status.OK).entity(updatedResource.get()).build();
}
如果可能,我想避免isPresent
和get
来电,所以我试过了
return update(resourceID, data).map(updatedResource -> Response.status(Response.Status.OK).entity(updatedResource).build();
但IntelliJ向我显示以下错误:
No instance(s) of type variable(s) U exist so that Optional<U> conforms to Response
为什么我会收到此错误,是否有办法避免此错误并避免isPresent
和get
?
答案 0 :(得分:6)
根据错误,您的方法的返回类型为Response
。但是,update(resourceID, data).map(updatedResource -> Response.status(Response.Status.OK).entity(updatedResource).build())
会返回Optional<U>
,因此您必须将返回类型更改为Optional<Response>
。
所以方法看起来像这样:
public Optional<Response> yourMethod (...) {
return update(resourceID, data).map(updatedResource -> Response.status(Response.Status.OK).entity(updatedResource).build());
}
或者,如果您不想更改返回类型,请添加orElse
来电,以指定默认值:
public Response yourMethod (...) {
return update(resourceID, data).map(updatedResource -> Response.status(Response.Status.OK).entity(updatedResource).build()).orElse(defaultValue);
}