equals()与“==”的使用我们已经很熟悉了,这里不做缀述,只说我今天遇到的一个小问题,希望看到的且没有注意到这个问题的神们可以避免这样的问题。
今天在调试程序的时候,一直报空指针异常,异常行也定位到了,但是就是看不出为什么错。
// 普通用户要判断是否含有这个权限
for(Role role:roles){
for(Privilege privilege:role.getPrivileges()){
if((privilege.getUrl()).equals(privUrl))
return true;
}
}
你是否认为上边的if判断中(privilege.getUrl()).equals(privUrl)和privUrl.equals(privilege.getUrl())效果是一样的呢!在两边都不为空的时候确实是一样的,可以正常的判断true or false,但是如果有一边为null呢,那情况可能就不一样了,下面看图:
也就是说你必须保证放到前边的不为空,才能保证不会有异常。
这个问题很小,在图片中也很明显有红色提示,但如果你写的是个变量可就不会提示你了。