前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Objects.equals有坑

Objects.equals有坑

作者头像
用户1263954
发布2022-05-23 16:02:52
2500
发布2022-05-23 16:02:52
举报
文章被收录于专栏:IT技术精选文摘IT技术精选文摘

前言

最近review别人代码的时候,发现有个同事,在某个业务场景下,使用Objects.equals方法判断两个值相等时,返回了跟预期不一致的结果,引起了我的兴趣。

原本以为判断结果会返回true的,但实际上返回了false。

记得很早之前,我使用Objects.equals方法也踩过类似的坑,所以有必要把这个问题记录下来,分享给大家。

到底怎么回事呢?

1. 案发现场

假设现在有这样一个需求:判断当前登录的用户,如果是我们指定的系统管理员,则发送一封邮件。系统管理员没有特殊的字段标识,他的用户id=888,在开发、测试、生产环境中该值都是一样的。

这个需求真的太容易实现了:

代码语言:javascript
复制
UserInfo userInfo = CurrentUser.getUserInfo();

if(Objects.isNull(userInfo)) {
   log.info("请先登录");
   return;
}

if(Objects.equals(userInfo.getId(),888)) {
   sendEmail(userInfo):
}

从当前登录用户的上下文中获取用户信息,判断一下,如果用户信息为空,则直接返回。

如果获取到的用户信息不为空,接下来判断用户id是否等于888。

  • 如果等于888,则发送邮件。
  • 如果不等于888,则啥事也不干。

当我们用id=888的系统管理员账号登录之后,做了相关操作,满怀期待的准备收邮件的时候,却发现收了个寂寞。

后来,发现UserInfo类是这样定义的:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT技术精选文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1. 案发现场
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档