我有一个列表,每个对象都可以包含子元素。我想递归地遍历每个元素,如果元素包含错误的值,就更新它。如果doupdate方法更新了元素,则返回true。
ddmupdated参数在开始时为false
boolean updateRecursive(DDMFormField dDMFormField, List<DDMFormField> dDMFormFieldList, boolean ddmUpdated){
if(!ddmUpdated){
ddmUpdated = doUpdate(dDMFormField);
}else{
doUpdate(dDMFormField);
}
if(!dDMFormFieldList.isEmpty()){
for (DDMFormField fl: dDMFormFieldList){
ddmUpdated = updateRecursive(fl,fl.getNestedDDMFormFields(), ddmUpdated);
}
}
return ddmUpdated;
}
最后,如果我对列表中的至少一个元素做了一些更改,我想返回true。我不知道为什么,它总是返回false,即使doupdate返回true,递归继续执行ddmupdate=true。
有人能提出一个保持真实价值的正确方法吗?
1条答案
按热度按时间vs3odd8k1#
您正在覆盖ddmupdated中递归调用的返回值。请确保仅在值为true时覆盖它,如下所示:
or运算符
|
如果其中一个参数为true,则返回true。