Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java;对于每一个“;及;“继续”;循环_Java_Loops - Fatal编程技术网

使用java;对于每一个“;及;“继续”;循环

使用java;对于每一个“;及;“继续”;循环,java,loops,Java,Loops,我有一个大方法,它看起来像这样: for (Person person : persons) { if (!person.isValid()) { continue; } .... boolean isDeleted = deletePersonFromDB1(person); if (!isDeleted) { continue; } .... } 基本上,我想从不同的数据库源中删除一个人员列表。如果任何操作失败,我想继续下一

我有一个大方法,它看起来像这样:

for (Person person : persons) {
   if (!person.isValid()) {
      continue;
   }
   ....
   boolean isDeleted = deletePersonFromDB1(person);
   if (!isDeleted) {
     continue;
   }
   ....

}
基本上,我想从不同的数据库源中删除一个人员列表。如果任何操作失败,我想继续下一个人。 我希望这样简化,并将我的业务逻辑放在一个方法中:

for (Person person : persons) {
    checkValidityAndDelete(person)
}

但不幸的是,我无法在我的方法
checkValidityAndDelete

中使用
continue
一词,使您的
checkValidityAndDelete
方法返回一个布尔值来指示此人是否既有效又已被删除:

private boolean checkValidityAndDelete(Person person) {
  return person.isValid() && deletePersonFromDB1(person);
}
因此,如果
checkValidityAndDelete
返回
false
,则可以
继续
,如果返回
true
,则可以继续执行其余的代码逻辑。如果您希望执行此操作,也可以不使用
continue

for (Person person : persons) {
  if(checkValidityAndDelete(person)) { // If the person is valid, 
    // perform logic...
  }
  // if not valid, skip if, and continue to next person...
}

如果您希望将循环中的所有内容都拉到另一个方法,那么另一个选项就是从它返回,以触发该方法停止

public void checkValidity(final Person person) {
    if (person.something) {
        return;
        // From the calling loop, this will act as a continue
        // since the method call would stop, and so the next
        // loop iteration would start.
    }
    // Do some more stuff
}

您可以使用该方法
返回
一个
布尔值
,然后执行一些
如果(结果){continue;}
键入内容?主题之外,但在删除
person
对象后,您为什么要继续使用该对象?或者事实上,如果您正在执行的业务逻辑像您在那里做的那样简单(而该方法只是一个
空洞
)您可以从它
返回
,无论您在哪里
继续
。这将导致方法终止,循环开始下一次迭代。您应该将其分解为多个方法。@JoakimDanielson:我见过类似的逻辑,例如事件发布、日志记录、现在已失效的资源清理等。