为啥 FindById 返回 Optional? [复制]
Posted
技术标签:
【中文标题】为啥 FindById 返回 Optional? [复制]【英文标题】:Why FindById returns Optional? [duplicate]为什么 FindById 返回 Optional? [复制] 【发布时间】:2020-06-23 14:12:54 【问题描述】:我目前在我的存储库接口中覆盖 findById
以返回一个普通对象,因为我不喜欢我必须做的不必要的代码:.isPresent()
和 .get()
ApplicationType findById(long applicationTypeId);
我只是检查if(applicationType != null)
有什么理由在这里实现 Optional 吗??
【问题讨论】:
因为在你辞掉工作并前往哥斯达黎加梦想之旅的一天后,一位初级开发人员会写信findById(applicationTypeId).getSomething()
你能说得更具体点吗?可能会显示更多源代码
Java 8 Optional: What's the Point? 搜索更多。
@OleV.V.,这篇文章是 Optional
用法的一个糟糕示例。
【参考方案1】:
Optional 从 JDK 8 开始在 JDK 中实现。
它谦虚地希望避免在代码中使用 null 检查(就像你实际上所做的那样)
Optional
在这里返回意味着我们可以有一个ApplicationType
值或null
。
当拥有Optional
时,您可以使用isPresent()
检查该值。 Optional
的值可以用get()
获取
Optional 很有趣,尤其是在使用 optinal 本身的函数直接执行操作时,单独使用 this :
Optional<ApplicationType> applicationType = repo.findById(1L);
applicationType.ifPresent(value -> doSomething(value));
applicationType.orElse(defaultApplicationType);
这里有一个完整的 guide 选项
【讨论】:
以上是关于为啥 FindById 返回 Optional? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法用 JOOQ 生成 DAO,findById 返回 Optional
为啥不能修改 Mongoose 查询返回的数据(例如:findById)