关于#java#的问题:一个一直报错空指针异常的对比内容是否相同的代码块怎么改呀😭😭

一个一直报错空指针异常的对比内容是否相同的代码块怎么改呀😭😭

public static User getUserByLoginName(String loginName)
    {
        for (User user : ALL_USER) {
            if(user.getLoginName().equals(loginName))
            {
                return user;
            }
        }
        return null;
//        for (int i = 0; i < ALL_USER.size(); i++) {
//            User user=ALL_USER.get(i);
//            if(user.getLoginName().equals(LoginName))
//            return user;
//        }
//        return null;
    }

用了两种方法
if(user.getLoginName().equals(LoginName)
一直报错空指针异常是为什么呀😭😭

改成这样:

public static User getUserByLoginName(String loginName) {
   if ( null != ALL_USER && !ALL_USER.isEmpty()) {
        for (User user : ALL_USER) {
            if(null != user && null != user.getLoginName() && user.getLoginName().equals(loginName)){
                return user;
            }
        }
   }
   return null;
}

有两个原因,一是ALL_USER为null,二是程序添加到ALL_USER的User对象为null,可以在使用这两种对象之前判断它们是否为null,根据判断结果进行不同的操作。

如可以在遍历ALL_USER之前, 判断ALL_USER是否为null,为null则返回null,不为null则使用循环遍历ALL_USER,寻找和loginName相同的内容的user。