例如当添加一用户时,需要先在数据库中验证是否存在相同的用户名,如果不存在,返回值是一个空的user对象(null),
User user = Dao.getUser(addUsername,addpwd);if(user == null){...}
当运行时,这个地方就会报错:java.lang.NullPointerException
这个空对象感觉是正常的,请教这个问题该怎么解决?

解决方案 »

  1.   

    空指针异常。没有初始化。可能Dao.getUser()得到的是一个空指针。
      

  2.   

    楼主是不是写错了?应该是if(user != null){...}吧 
      

  3.   

    看看你的Dao是不是null还有就是你的user为null的时候有没有对他进行操作if(user == null){...}  在条件成立的时候有没有操作user对象?如果操作了会抛空指针
      

  4.   

    LZ如果不想抛出java.lang.NullPointerException 但又觉得当没有查询到用户时业务应该返回一个空的话可以考虑用逻辑空对象User nullUser = User.NULL;
    public class User {
    private String userName;

        private static class NullUser extends User{
         public NullUser(){
         super("");
         }
        }
        public static final User NULL = new NullUser();
        
        
        /**
     * @return the userName
     */
    public String getUserName() {
    return userName;
    }
    /**
     * @param userName the userName to set
     */
    public void setUserName(String userName) {
    this.userName = userName;
    }
    public User(String userName){
         this.userName = userName;
        }
        public static void main(String[] args) {
    User nullUser = User.NULL;
    }
    }
    //Dao.getUser(addUsername,addpwd)方法的实现要保证如果没有查询到用户信息则返回User.NULL
    User user = Dao.getUser(addUsername,addpwd);
    if(user==User.NULL){
      // write your code
    }
      

  5.   

    是不是Dao是空啊
    调试下看看
      

  6.   

    空指针异常,Dao.getUser()没有初始化
      

  7.   

    基本上就是你说的这样,Dao.getUser(addUsername,addpwd)是访问数据库的操作,如果数据表中没有此用户,就会返回一个null对象(Dao.getUser(addUsername,addpwd)方法中的返回操作为return user=null;如果有值的话,就会先把找到值一一赋给user对象的属性,然后return user;)。就是当没有找到结果,就会返回null对象,此时User user = Dao.getUser(addUsername,addpwd);这条语句就会出错(如上);我就是不知道这里到底改怎么操作?
      

  8.   

    不是Dao为null,就是{...}中的user为null 
      

  9.   

    User user = Dao.getUser(addUsername,addpwd);if(user == null){...} 看你的代码,Dao应该是类名,除非你的变量名喜欢用大写开头,哈哈1 如果是类名,则你的getUser内部有错误
    2 如果是变量名,则你的Dao自身就是null
    3 if(user == null) 是有点奇怪,你确信你的逻辑是正确的?4 最后一种可能,你数错了行数,呼呼。
      

  10.   


    谢谢各位,问题解决了,就是因为返回值为null使user被赋值为null,而后面代码中又引用了user对象的方法,所以才报错。
      

  11.   

    if(user == null){...} user是空就会空指针异常吧
      

  12.   

    import java.util.*;public class DecideNull{
    public static void main(String args[]){
    ArrayList<String> list = new ArrayList<String>();

    String str1 = null;

    if (null != str1){
    list.add(str1);
    }

    System.out.println(list.size());
    }
    }
      

  13.   

    null在判断中 写在第一个,要判断的对象写在第2个,这样就可以保证了判断中null,
    还有null的对象下面就不能引用来做其他事了
      

  14.   

    看看你的Dao是不是null 还有就是你的user为null的时候有没有对他进行操作 if(user == null){...} 在条件成立的时候有没有操作user对象?如果操作了会抛空指针
      

  15.   

    用条件判断if(user!=null){执行把属性值赋给对象。然后返回对象}
    条件不成立时就返回null.
    这样的话,如果你在数据库找到数据的话,他就满足上面的if条件。那么自然也就返回user
      

  16.   

     不能是user==null
    应该是null==user或者user!=null