0
我有一個使用的代碼塊,如果有聲明,運營商:如果與和運營商的java
final String NODE_TYPE_LIST = "List";
final String NODE_TYPE_DETAIL = "Detail";
if ((!NODE_TYPE_LIST.equalsIgnoreCase(dataNodeBean.getType()))
&& (!NODE_TYPE_DETAIL.equalsIgnoreCase(dataNodeBean.getType()))) {
throw new InvalidNodeTypeException("Invalid Node type.");
}
對於所示例,如果dataNodeBean.getType()返回「目錄」。 根據this鏈接,僅當if語句中的兩個表達式都返回true時,上面的代碼纔會拋出InvalidNodeTypeException。但是,當我調試程序(其中dataNodeBean.getType()返回「列表」)我看到兩個表達式正在評估,即使第一個表達式返回false,作爲結果引發InvalidNodeTypeException(自定義異常)引發。 我對此代碼的期望是當dataNodeBean.getType()不返回List或Detail時引發異常。 我不明白我在這裏做錯了什麼。
你確定'getType'返回'String'而不是其他對象嗎? – npinti
@npinti yes getType返回String。 – HyperioN
@KrutiPatel這導致了僞代碼'value!= aString OR值!= anotherString'這總是'true',因爲'value'不能等於兩個字符串 –