Java中如何使用Optional:存在时调用对象方法,否则返回null
解决方案
你的问题核心是Optional的空值安全链式调用——ifPresent()返回void,无法直接链式调用getBooking(),可以用以下两种一行代码的方式解决:
方式一:用户不存在时返回空列表
修改getBooking方法,利用map()转换Optional内部值,并用orElse()提供默认值:
public List<Booking> getBooking(Integer id) { return customerRepository.findById(id) .map(CustomerEntity::getBooking) .orElse(Collections.emptyList()); }
map(CustomerEntity::getBooking):如果Optional包含CustomerEntity实例,就提取它的booking列表;如果是空Optional,则返回空的Optional<List<Booking>>orElse(Collections.emptyList()):当Optional为空时,返回预定义的空列表,避免抛出NoSuchElementException
方式二:返回Optional<List<Booking>>交由调用方处理
如果你想把空值的处理逻辑交给上层调用方,可以直接返回转换后的Optional:
public Optional<List<Booking>> getBooking(Integer id) { return customerRepository.findById(id) .map(CustomerEntity::getBooking); }
调用方可以通过ifPresent()、orElse()等方法自行处理空值场景。
内容的提问来源于stack exchange,提问作者akanesora
相关产品推荐
相关产品推荐

