有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

检查登录用户时发生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())当用户未登录时


共 (3) 个答案

  1. # 1 楼答案

    试试这个

        if( session.isOpened())
        {
          if(user!=null)
           {
             //do here whatever
           }
        }
    
  2. # 2 楼答案

    您需要使用&&

    if (userId!=null && !userId.isEmpty()) {
    

    如果您使用了||,那么Java无论如何都会对这两个条件求值,而不管这两个表达式的真值是多少。因此,如果您使用了||,那么即使userId为空,Java也会继续尝试计算!userId.isEmpty(),这将为您提供NullPointerException

    通过使用&&,如果第一个条件为false,那么Java知道表达式已经为false,没有继续的必要。因此在本例中,如果userId为null,则userId!=null为false,Java跳过if语句体

  3. # 3 楼答案

    你的逻辑是错误的;您需要&&(逻辑and)而不是||(逻辑or)来正确短路您的条件

    if(userId!=null && !userId.isEmpty()){
    

    这样,如果userId为空,则不会执行userId.isEmpty(),也不会抛出NullPointerException