簡體   English   中英

如何在Java>中檢查多重布爾值true或false

[英]How to check multible boolean values true or false in java>

我有8個布爾值。 當8個布爾值中的一個或多個布爾值為false時,我想回滾。

boolean flag = false;
        boolean flag1 = false;
        boolean flag2 = false;
        boolean flag3 = false;
        etc,,.

flag = dbCall...

標志值在這里改變。

在這里我必須手動檢查像

    if(flag == false && flag1 == false && ....){
      userTransaction = rollback;
    }else{
     userTransaction = commit;
    }

有沒有簡單的方法來檢查java中的布爾值。

您的代碼最初存在錯誤。

if(flag = false && flag1 = false && ....){
  userTransaction = rollback;
}

= (分配)與== (比較)不同。

接下來是您當前的樣式,您可以將代碼減少為

if(! flag || !flag1 ||  ....){
  userTransaction = rollback;
}

因為它們是布爾值,所以您無需再次檢查布爾值。

我建議的最后一件事是,無論這些變量來自何處,都要維護一個列表並遍歷它們以進行全部檢查,這樣,即使您擁有n個布爾值,與檢查相關的代碼仍保持不變。

接下來呢?

if(flag  && flag1  && ....){
     userTransaction = commit;
  } else {
      userTransaction = rollback;
  }

我認為這是處理此問題的最快方法。

  1. 將您的標志寫入列表或數組

  2. 像這樣測試

作為列表:

if(!myList.contains(false)) //all true;

作為數組

if(!myArray.asList().contains(false)) //all true;

您可以使用Apache的BooleanUtils對所有值執行and操作:

if (BooleanUtils.and(flag1, flag2, flag3, flag4)) {
    userTransaction = commit;
} else {
    userTransaction = rollback;
}

或者只是按照通常的方式做:

if (flag1 && flag2 && flag3 && flag4)) {
    userTransaction = commit;
} else {
    userTransaction = rollback;
}

如果您不需要中間結果,則可以嘗試以下操作:

boolean result = true;
boolean doRollback = true;
try {
  result = db.doSomething1() && result; // ? && true -> ?; 
  result = db.doSomething2() && result; // if result: false then ? && result -> false
  if (result) {userTransaction.commit(); doRollback = false;}
} finally {
  if (doRollback) userTransaction.rollback();
}

這將確保每個db操作都已執行...並且該結果包含最終結果。

暫無
暫無

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

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