2014-04-02 138 views
0

我所做的代碼的一部分應該看起來像這樣。空指針訪問警告

String name = request.getParameter("Name"); 
if(name!=null && !name.isEmpty()) 
{ 
    DO SOMETHING 
} 

但結束了使用'||'運營商而不是'& &'運營商。我是在

.isEmpty()給出的警告

空指針訪問:變量名只能是零,在這種位置。

有人可以解釋我爲什麼發生?

順便說一下,'請求'是一個HttpServletRequest對象,我從以前的類中獲得。

回答

2

當你這樣做:

if(name!=null || !name.isEmpty()) 

然後,如果達到第二部分,namenull由於Short-circuit evaluation

請記住false && anythingfalsetrue || anythingtrue

4
name != null || !name.isEmpty() 
  1. 如果名稱不爲空,第二個條件是從未檢查;
  2. 如果名稱爲空,則檢查第二個條件並拋出NullPointerException
1

你可以這樣做:

String name = request.getParameter("Name") != null ? request.getParameter("Name") : ""; 

確保namenull。然後

if (name.isEmpty()) { ... } 
-1
if(name!=null){ 
    if(!name.isEmpty()){ 
     //body 
    } 
} 
+0

'name.equals(空)'會拋出一個'NullPointerException'如果'name'是'null'。 – JonK

+0

正如你已經糾正它,我已經刪除了我的downvote。 – JonK