簡體   English   中英

如果在Java中使用AND運算子

[英]if with AND Operator in java

我有一塊代碼,它使用與AND運算符的if語句:

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()返回“列表”。 根據鏈接,僅當if語句中的兩個表達式都返回true時,以上代碼才應引發InvalidNodeTypeException。 但是,當我調試程序時(dataNodeBean.getType()返回“ List”),即使第一個表達式返回false,我也會看到兩個表達式都被求值,結果拋出了InvalidNodeTypeException(Custom Exception)。 我希望這段代碼能在dataNodeBean.getType()不返回List或Detail時引發異常。 我不明白我在做什么錯。

您的代碼非常好。 我運行了以下測試:

public static void main(String[] args) {
    System.out.println(test("A"));
    System.out.println(test("B"));
    System.out.println(test("C"));
}

private static boolean test(String value) {
    return (!"a".equalsIgnoreCase(value)) && (!"b".equalsIgnoreCase(value));
}

它回來了

false
false
true

正如您所期望的。 我懷疑問題出在getType方法中。 一種簡單的確認方法是將檢查移至傳遞getType結果的單獨方法,然后編寫一些單元測試以確認其對除“列表”或“詳細信息”之外的任何內容返回true。

暫無
暫無

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

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