Optional 对象的使用

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

猜你喜欢

转载自blog.csdn.net/maqingbin8888/article/details/83054960