假如这个地方可能为null,那他一定会为null

发布时间 2023-12-23 00:24:34作者: yx1024

假如你的代码,在某个地方(比如controller层)提示你:这个方法调用可能会产生null,那么千万不要视而不见,在某一瞬间它一定会是null,势必报错。

```plaintext
    /**
     * 修改保存管理员
     */
    @PostMapping("/admin/edit")
    @ResponseBody
    public Message editAdmin(Admin admin) {
        //查询账户是否存在
        Admin loginAdmin = adminService.findAdminByAdminName(admin.getAdminName());
        if (loginAdmin != null) {
            //根据管理员账号查到的管理员是不是当前管理员
            if (!admin.getId().equals(loginAdmin.getId())) {
                //不是当前管理员
                return Message.error("账户已经被占用");
            }
        }

        Admin oldAdmin = adminService.findAdminById(admin.getId());
        //判断是否修改过密码(能走到这里,说明设置的账号是合法的,要么是自己的,要么是新的)
        if (admin.getAdminPwd().equals(oldAdmin.getAdminPwd())) {//这里要用oldAdmin,而不是loginAdmin
            //没修过
            admin.setAdminPwd(null);
        } else {
            //重新加密,写入数据库
            String pwd = DigestUtils.md5DigestAsHex(admin.getAdminPwd().getBytes());
            admin.setAdminPwd(pwd);
        }

        //修改管理员
        boolean flag = adminService.updateAdmin(admin);
        if (flag) {
            return Message.success();
        } else {
            return Message.fail();
        }
    }

上边代码的某一行一定得是oldAdmin.getAdminPwd(),假如写成loginAdmin.getAdminPwd(),就会有提示,一定要检查代码。