前言
最近review别人代码的时候,发现有个同事,在某个业务场景下,使用Objects.equals
方法判断两个值相等时,返回了跟预期不一致的结果,引起了我的兴趣。
原本以为判断结果会返回true的,但实际上返回了false。
记得很早之前,我使用Objects.equals
方法也踩过类似的坑,所以有必要把这个问题记录下来,分享给大家。
到底怎么回事呢?
1. 案发现场
假设现在有这样一个需求:判断当前登录的用户,如果是我们指定的系统管理员,则发送一封邮件。系统管理员没有特殊的字段标识,他的用户id=888,在开发、测试、生产环境中该值都是一样的。
这个需求真的太容易实现了:
UserInfo userInfo = CurrentUser.getUserInfo();
if(