检查登录用户时发生java NullPointerException
我试图通过检查会话中是否存储了值来检查用户是否登录:
String userId = null;
if(session.getAttribute("user_id")!=null){
userId=(String)session.getAttribute("user_id");
}
if(userId!=null||!userId.isEmpty()){
//do something
}
但是我在这一行得到一个NullPointerException:if(userId!=null||!userId.isEmpty())
当用户未登录时
# 1 楼答案
试试这个
# 2 楼答案
您需要使用
&&
:如果您使用了
||
,那么Java无论如何都会对这两个条件求值,而不管这两个表达式的真值是多少。因此,如果您使用了||
,那么即使userId
为空,Java也会继续尝试计算!userId.isEmpty()
,这将为您提供NullPointerException
通过使用
&&
,如果第一个条件为false,那么Java知道表达式已经为false,没有继续的必要。因此在本例中,如果userId
为null,则userId!=null
为false,Java跳过if
语句体# 3 楼答案
你的逻辑是错误的;您需要
&&
(逻辑and)而不是||
(逻辑or)来正确短路您的条件这样,如果
userId
为空,则不会执行userId.isEmpty()
,也不会抛出NullPointerException