[英]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.