Objects.equals存在哪些潜在问题?

2026-05-22 13:500阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3564个文字,预计阅读时间需要15分钟。

Objects.equals存在哪些潜在问题?

前言+最近review别人代码的时候,发现有个同事在某个业务场景下,使用+Objects.equals+方法判断两个值是否相等时,返回了跟预期不一致的结果,引起了我的兴趣。+原本以为判断结果会返回是或否,没想到却引出了我的兴趣。+

前言

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

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

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

到底怎么回事呢?

1. 案发现场

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

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

UserInfo userInfo = CurrentUser.getUserInfo(); if(Objects.isNull(userInfo)) { log.info("请先登录"); return; } if(Objects.equals(userInfo.getId(),888)) { sendEmail(userInfo): }

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

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

阅读全文

本文共计3564个文字,预计阅读时间需要15分钟。

Objects.equals存在哪些潜在问题?

前言+最近review别人代码的时候,发现有个同事在某个业务场景下,使用+Objects.equals+方法判断两个值是否相等时,返回了跟预期不一致的结果,引起了我的兴趣。+原本以为判断结果会返回是或否,没想到却引出了我的兴趣。+

前言

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

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

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

到底怎么回事呢?

1. 案发现场

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

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

UserInfo userInfo = CurrentUser.getUserInfo(); if(Objects.isNull(userInfo)) { log.info("请先登录"); return; } if(Objects.equals(userInfo.getId(),888)) { sendEmail(userInfo): }

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

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

阅读全文