[英]Eclipse and short circuit evaluation
我正在嘗試使用短路評估來簡化檢查的編寫,但是在if子句的最后一個語句中,eclipse調用“本地變量繼承可能尚未初始化”,我是否正確使用了評估方法? IDE可以理解該語句的評估結果嗎?
if ((className.startsWith("Svl")) &&
((inherit = aAST.findFirstToken(TokenTypes.EXTENDS_CLAUSE)) == null)
|| !(inherit.getText().equals("Servlet******"))) {
log(aAST.getLineNo(), "error" + tokenIdent.getText());
}
您的括號有誤,這就是導致該錯誤的原因。 簡化后,布爾表達式的結構為
(A && B) || C
在B中您指定要inherit
。 如果A失敗,則(A && B)短路為false,不評估B,並且需要評估C以找出最終結果。 顯然,在評估C時, inherit
可能尚未初始化。
根據實際需要,可以交換A和B的位置。這將確保始終對B求值。 另外,您真正需要的可能是A &&(B || C)。 要求由您決定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.