例如当添加一用户时,需要先在数据库中验证是否存在相同的用户名,如果不存在,返回值是一个空的user对象(null),
User user = Dao.getUser(addUsername,addpwd);if(user == null){...}
当运行时,这个地方就会报错:java.lang.NullPointerException
这个空对象感觉是正常的,请教这个问题该怎么解决?
User user = Dao.getUser(addUsername,addpwd);if(user == null){...}
当运行时,这个地方就会报错:java.lang.NullPointerException
这个空对象感觉是正常的,请教这个问题该怎么解决?
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
}
调试下看看
2 如果是变量名,则你的Dao自身就是null
3 if(user == null) 是有点奇怪,你确信你的逻辑是正确的?4 最后一种可能,你数错了行数,呼呼。
谢谢各位,问题解决了,就是因为返回值为null使user被赋值为null,而后面代码中又引用了user对象的方法,所以才报错。
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());
}
}
还有null的对象下面就不能引用来做其他事了
条件不成立时就返回null.
这样的话,如果你在数据库找到数据的话,他就满足上面的if条件。那么自然也就返回user
应该是null==user或者user!=null