2013-05-09 134 views
0

即時嘗試使用短路評估來簡化檢查的寫作,但eclipse調用「局部變量繼承可能尚未初始化」在if語句的最後一個語句中,我是正確使用評估方法? IDE可以理解評估聲明嗎?Eclipse和短路評估

if ((className.startsWith("Svl")) && 
       ((inherit = aAST.findFirstToken(TokenTypes.EXTENDS_CLAUSE)) == null) 
       || !(inherit.getText().equals("Servlet******"))) { 
      log(aAST.getLineNo(), "error" + tokenIdent.getText()); 
     } 
+0

看起來你的一個變量從未初始化過,但你仍然在使用它...... – 2013-05-09 14:42:22

+0

if語句的第二個語句沒有初始化變量嗎? – 2013-05-09 14:44:53

+1

是的,它可以理解。這不是IDE,而是Java語言規範。 – 2013-05-09 14:45:58

回答

7

你有你的括號錯誤,這是什麼導致的錯誤。簡化後,你的布爾表達式的結構是

(A && B) || C 

在B中你分配給inherit。如果A失敗,則(A & & B)被短路爲假,B不被評估,並且C需要被評估以找出最終結果。顯然,當C被評估時,inherit可能尚未初始化。

根據實際情況,您可以交換A和B的位置。這將確保B始終得到評估。或者,你真正需要的可能是A()&(B || C)。這些要求取決於你。