Optional<Xxx>
Optional<TUser>
----------------------------
Optional.of(xxx) //xxx必须为非空
Optional.ofNullable(xxx) //xxx可以为空也可以为非空
Optional.empty() //参数包装成null对象
例子一
TUser user = userMapper.selectById(userId);
if (user == null) {
return Optional.empty();
}
return Optional.of(user);
-----------------------------------------上面的可以用这样来表示
TUser user = userMapper.selectById(userId);
return Optional.ofNullable(user);
Optional.ofNullable(product).map(productConverter()); //Optional结合map使用
Optional的返回值的处理
optional.isPresent() //如果值存在的话,进行一些处理
optional.orElse(value); //如果对象的值为null时,则使用value
未例isPresent()
optional1.isPresent() //判断值是否存在
// 如果不是null,调用Consumer
optional1.ifPresent(new Consumer<Integer>() {
@Override
public void accept(Integer t) {//具体的逻辑
System.out.println("value is " + t);
}
});
orElseThrow()值不存在抛异常
@GetMapping("/group/{groupProductId}")
public ApiResponse<GroupProduct> getGroupProductDetail(@PathVariable long groupProductId) {
Optional<GroupProduct> optional = productService.getGroupProductById(groupProductId);
return ApiResponse.success(optional.orElseThrow(() -> ApiException.propagate(ErrorCodes.ENTITY_NOT_FOUND)));
} //不存在值时抛异常,存在时则会返回GroupProduct