今日代码 PK | 使用 Optional 判空

对于 Java 开发来说,判空可以说是一种素养,很多 bug 都是由空指针引起的。

为了避免空指针异常,我们通常会在使用对象前进行判空,

如果某个必要的对象为空,可以抛出相应的异常。

示例代码如下:

Item item = itemService.lambdaQuery()
        .eq(Item::getUserId, userId)
        .eq(Item::getName, itemName)
        .one();
if (item == null) {
    throw new RuntimeException();
}

当然还有另外一种使用 Optional的方式,更加的简洁,但是有一点的学习和熟悉成本,

示例代码如下:

Item item = Optional.ofNullable(itemService.lambdaQuery()
                .eq(Item::getUserId, userId)
                .eq(Item::getName, itemName)
                .one())
        .orElseThrow(RuntimeException::new);

大家更喜欢哪种呢?欢迎投票并在评论区留下自己的看法。

完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!

在线访问:https://www.codecopy.cn/post/iklcx9

更多优质代码欢迎进入小程序查看!


往期推荐

今日代码 PK | Java 使用正则表达式

今日代码 PK | 优雅统计耗时

今日代码 PK | 日期时间处理

今日代码大赏 | 集合高阶操作

今日代码大赏 | 饿汉式单例模式

相关推荐

  • 永久激活 GPT4.0 !无限使用!即将结束!
  • 全职开源四年,一切并没有那么简单。
  • Spring Boot集成Debezium快速入门demo
  • 博士申请 | 香港大学陈怡老师课题组招收计算机安全方向全奖博士/博后
  • CVPR 2024 | 通过细粒度人类反馈对齐数据,提高多模态大模型可信度
  • TPAMI 2024 | 针对节点的融合全局-局部信息的图谱滤波方法
  • 多领域文献阅读超越GPT-4!深势科技发布科学文献多模态大模型Uni-SMART技术报告
  • 警惕发布前夕的“致命遗忘”
  • 邀你探索金融、教育、法律及医疗行业的大模型创新应用,AICon 2024 即将拉开帷幕
  • Java 22 正式发布
  • 微软开抢年收入上亿美元的 Redis 饭碗?开源性能遥遥领先的 Garnet:无需修改,Redis 客户端可直接接入
  • 风控也在用大模型了
  • 一次性支持 200 万字无损上下文!Kimi智能助手玩了个大的——月之暗面「登月」最新进展!
  • 今日arXiv最热NLP大模型论文:大模型RAG新宠!浙江大学发布自反馈检索增强方法
  • 无人驾驶飞机上架淘宝!?亿航智能首款国产「空中的士」网上开售,股价一度飞升 30%
  • 如何从头开始编写LoRA代码,这有一份教程
  • Stable Video 3D震撼登场:单图生成无死角3D视频、模型权重开放
  • 利物浦用DeepMind的AI制定战术已有三年了
  • 融资15亿美元却被挖走创始人,微软正在将这家创企生吞活剥?
  • 奥特曼回应一切:GPT-5、董事会宫斗、Ilya当时看到了什么