java - 使用 && 在Java中使用相同的变量分配给变量是否正确?
问题描述
我正在对旧代码进行一些更改而不是需要维护,我发现了类似这样的东西
public boolean aMethod(){
boolean isValid = true;
**isValid = isValid &&** executeGetDocs(id.toString(),program().toString(), document.get(name));
return isValid;
}
方法executeGetDocs可能返回 true 或 false。
但我不确定: **isValid = isValid && executeGetDocs ** 是正确的还是只是多余的。
所以我在这里,有人可以请给我一些解释吗?
非常感谢!
已编辑
整体方法:
private boolean validateDocs(List<Map<String, Object>> documentsList) {
boolean isValid = true;
StringBuilder gradoAntComp = new StringBuilder();
for (Map<String, Object> document : documentsList) {
String id = document.get("ID_DOC").toString();
if (id.equalsIgnoreCase("25")) {
isValid = getData(id.toString(),program().toString(), document.get(name))
} else if (id.equalsIgnoreCase("26") ) {
isValid = isValid && getDocs(id.toString(),program().toString(), document.get(name));
}
}
return isValid;
}
解决方案
并不是说我们看到了你的整个方法,我们可以看到你试图isValid
在一个循环中分配。以这种方式编写,代码使用&&
条件与运算符仅执行getDocs
if isValid
is still方法true
。
如果之前的赋值将isValid
其设置为false
,则getDocs
甚至不会被调用;它会短路。这意味着&&
操作员已经知道表达式的结果将是false
,因为isValid
是false
,所以它“短路”了评估并且不评估另一个操作数——对 的调用getDocs
。
这很有意义,特别是如果getDocs
是一种开销很大的方法。
推荐阅读
- database - 使用 Graphql 突变更新 Postgres 表中的列值
- javascript - 将值传递给父组件未定义
- react-native - 尝试从嵌套对象中检索键/值后,“TypeErroe:无法读取未定义的属性名称”
- python - 使用另一个容器连接 Cassandra 容器
- css - CSS - 选择一个包含子类的类
- prestashop - prestashop 1.7.5 将 product-discounts.tpl 显示为 mini-products/product.tpl
- react-native - DrawerNavigator 滞后
- javascript - AngularJS 没有命名为 ng-app 和 Express
- node.js - 无法使用 npm 安装/卸载任何东西
- angular - 在角度中,如何在不使用导入的情况下在角度模板中使用管道?