gpt4 book ai didi

java - 了解 Optional.map()

转载 作者:搜寻专家 更新时间:2023-10-31 08:31:39 25 4
gpt4 key购买 nike

查看 Optional 的示例使用,其中可选项首先通过数据库调用加载,然后映射到 Spring 安全性 UserDetails 实例。代码如下所示:

Optional<User> user = userRepository.findByName(username);
user.orElseThrow(()-> new UsernameNotFoundException("Ahhh Shuckkkks!!!");
return user.map(CustomUserDetails::new).get();

在最后一行,调用等于 return new CustomUserDetails(user.get())

还有人知道是否有更短更流畅的方式来编写上述示例?

最佳答案

是的,那是等价的。但是代码应该写成

return userRepository.findByName(username)
.map(CustomUserDetails::new)
.orElseThrow(()-> new UsernameNotFoundException("Ahhh Shuckkkks!!!"));

这避免了一个无用的变量,在最后隔离了异常情况,并避免了对 get() 的讨厌调用,它只能保证在这里工作正常,因为你已经调用了 orElseThrow () 之前。

关于java - 了解 Optional<T>.map(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47557101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com