我有8个布尔值。当8个布尔值中的一个或多个出现错误时,我想回滚。
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中的多个布尔值。
答案 0 :(得分:4)
您的代码最初存在错误。
if(flag = false && flag1 = false && ....){
userTransaction = rollback;
}
=
(分配)与==
(比较)不同。
接下来就是你当前的风格,你可以减少代码
if(! flag || !flag1 || ....){
userTransaction = rollback;
}
因为它们是布尔值,你不需要再用布尔值来检查。
我建议的最后一件事是,这些变量来自何处,维护一个列表并对它们进行迭代以检查所有变量,这样,与检查相关的代码保持不变,即使n
个布尔值为dir()
有
答案 1 :(得分:4)
以下怎么样?
if(flag && flag1 && ....){
userTransaction = commit;
} else {
userTransaction = rollback;
}
答案 2 :(得分:2)
我认为这是解决这个问题的最快方法。
将您的标记写入List或Array
像这样测试
如清单:
if(!myList.contains(false)) //all true;
As Array
if(!myArray.asList().contains(false)) //all true;
答案 3 :(得分:2)
您可以通过Apache对BooleanUtils的所有值执行lr
操作:
and
或者只是按常规方式行事:
if (BooleanUtils.and(flag1, flag2, flag3, flag4)) {
userTransaction = commit;
} else {
userTransaction = rollback;
}
答案 4 :(得分:1)
如果您不需要中间结果,那么您可以试试这个:
library(data.table)
dcast(setDT(mydata), issn+periodico~area, value.var = "qualis")
这将确保执行每个数据库操作......并且该结果包含最终结果。