[英]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;
}
我認為這是處理此問題的最快方法。
將您的標志寫入列表或數組
像這樣測試
作為列表:
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.