!Boolean.TRUE.equals(isRegister) 和 !isRegister有什么区别?

一株草的剑意
  • 21

场景介绍:
这是我在公司中看到已经离职高工写的一段代码,主要判断手机号是否注册,但这边判断写法有点疑问

        // 判断手机号是否有注册
        boolean isRegister = this.userRemoteService.isRegister(phone);
        if (!Boolean.TRUE.equals(isRegister)) {
           // 业务代码
        }

为什么要这么写 !Boolean.TRUE.equals(isRegister) 而不是 !isRegister,小弟不是很了解啊?

上面不是已经是基础类型的boolean,不是包装类的Boolean,直接if(!isRegister)这样就可以了呀,难道这里面还有什么微妙的东西吗?

求教知道的老哥!!!

回复
阅读 378
2 个回答

除非 isRegister 方法可能返回 null(但你这里例子里从变量的声明上看也是不可能返回 null),否则就是脱裤子放屁,没有任何理由需要用这种写法。

上面为空就直接NPE,拆箱;
下面!Boolean.TRUE.equals(isRegister)
这个操作不会写成Boolean.False.equals(isRegister)吗,还要反向操作一把

你知道吗?

宣传栏