我有一个很大的方法,看起来像这样:
for (Person person : persons) {
if (!person.isValid()) {
continue;
}
....
boolean isDeleted = deletePersonFromDB1(person);
if (!isDeleted) {
continue;
}
....
}
基本上,我想从其他数据库源中删除人员列表。如果任何操作失败,我想继续下一个人。 我想这样简化,然后将我的业务逻辑放入方法中:
for (Person person : persons) {
checkValidityAndDelete(person)
}
但是不幸的是,我无法在方法continue
中使用单词checkValidityAndDelete
答案 0 :(得分:0)
使您的checkValidityAndDelete
方法返回一个布尔值,以指示此人是否有效且已被删除:
private boolean checkValidityAndDelete(Person person) {
return person.isValid() && deletePersonFromDB1(person);
}
因此,如果checkValidityAndDelete
返回false
,则可以continue
,如果返回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...
}
答案 1 :(得分:0)
如果您希望将循环中的一切拉出到另一个方法,则另一种选择是简单地从其中return
〜触发该方法停止。
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
}