簡體   English   中英

空指針訪問警告

[英]Null Pointer Access Warning

我編寫的代碼的一部分應該看起來像這樣。

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

但最終使用“ ||” 運算符,而不是“ &&”運算符。 我在接到警告

名稱 .isEmpty()

空指針訪問:變量名稱只能在此位置為空。

有人可以解釋一下為什么會這樣嗎?

順便說一句,“ request ”是我從上一類獲得的HttpServletRequest對象。

name != null || !name.isEmpty()
  1. 如果name不為null,則從不檢查第二個條件;否則為false。
  2. 如果name為null,則檢查第二個條件並拋出NullPointerException

當您這樣做時:

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

然后,如果到達第二部分,則由於短路評估namenull

請記住, false && anything都是falsetrue || anything true || anything都是true

你可以做:

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

確保name不為null 接着

if (name.isEmpty()) { ... }
if(name!=null ){
   if(!name.isEmpty()){
       //body
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM