Java 切换布尔值,但只切换一次?(爪哇)

Java 切换布尔值,但只切换一次?(爪哇),java,boolean,toggle,Java,Boolean,Toggle,偶尔需要在循环中只存储一次布尔值(以记录它已从false更改为true,反之亦然),同时执行循环直到结束,但不再关心布尔值的更改。例如: public static boolean dbDelete(Collection argObjectCollectionToDelete) { boolean result = true; for (Object object : argObjectCollectionToDelete) {

偶尔需要在循环中只存储一次布尔值(以记录它已从false更改为true,反之亦然),同时执行循环直到结束,但不再关心布尔值的更改。例如:


    public static boolean dbDelete(Collection argObjectCollectionToDelete) {
        boolean result = true;
        for (Object object : argObjectCollectionToDelete) {
            boolean dbDelete = dbDelete(object);
            if (!dbDelete) {
                result = false;
            }
        }
        return result;
    }
是否有某种方法来执行代码的等效项


if (!dbDelete) {
    result = false;
}

以更优雅的方式,最好是一行?

怎么样:

result &= dbDelete(object);
这相当于:

result = result & dbDelete(object);

因此,只有当
result
以前为true并且
dbDelete
返回true时,它才会为true。

result=dbDelete(对象)?结果:假

尝试在变量名中添加更多含义-这会使事情变得更简单

if (!dbDelete(object)) {
    result = false;
}
public static boolean dbDelete(Collection argObjectCollectionToDelete) {
    boolean completedSuccessfully = true;
    for (Object object : argObjectCollectionToDelete) {
        boolean dbDelete = dbDelete(object);
        if (completedSuccessfully && !dbDelete) {  //won't change anymore after failure
            completedSuccessfully = false;
        }
    }
    return completedSuccessfully;
}

肯定比我的答案要短,但至少对我来说,更难阅读。@nfechner:复合作业是一种后天习得的嗜好,但我认为,即使你自己不经常使用,至少也值得对它们感到舒服一点。只是偶尔这样的事情会产生巨大的变化——特别是在可以使用单个表达式而不是
if
块的情况下。非常好,我想要这样的东西。:)“虽然执行循环到最后,但不再关心布尔值的变化”,我只是更新了它。现在,它只能从true转换为false,而不能返回true。如果有任何方法返回true,则另一面是
b |=method()
public static boolean dbDelete(Collection argObjectCollectionToDelete) {
    boolean completedSuccessfully = true;
    for (Object object : argObjectCollectionToDelete) {
        boolean dbDelete = dbDelete(object);
        if (completedSuccessfully && !dbDelete) {  //won't change anymore after failure
            completedSuccessfully = false;
        }
    }
    return completedSuccessfully;
}