RETURN 是否随时退出该方法,即使它在复杂的 IF 语句中?
Is RETURN going out the method at any moment, even if it is in a complex IF statement?
我有这样的代码:
private final Something (SomethingElse nimportant)
List list = (List) mListOfSomething.get(SOME_ENUMS);
if (list == null)
// dont ask me why not list.isEmpty(), I'm not the author of this code)
list = new ArrayList();
if (transaction.getPartner() instanceof IAnotherSomething) {
IAnotherSomething ias = (IAnotherSomething) transaction.getPartner();
return ias.getContract().next();
}
// NIMPORTANT code ommited, produces boolean "something"
if (something) {
// something happens
list.add(contract)
}
if (!something) {
// something else happens
list.add(contract)
}
}
return (IContract) list.get(0);
}
我很头疼 - 如果列表为空,(或 == null)并且此 if 语句 (transaction.getPartner() instanceof IAnotherSomething)
为真,则该方法应该在此 if 语句上退出并且应该 return ias.getContract().next()
- 还是我错了?
A return 语句结束方法的执行,return将指定的值传递给方法的调用者,无论它位于方法中的何处。它是否在 "complex if statement".
内并不重要
在一些特殊情况下,return 语句不会是方法中执行的最后一条语句:
return 语句包含在包含 finally 块的 try 子句中,该语句将在 return 从方法中执行之前执行。
return 语句包含在一个 try 子句中,表达式的求值被 returned 抛出一个被 catch 块捕获的异常,它将被执行(并且必须有一个 return 语句或抛出异常)。
我有这样的代码:
private final Something (SomethingElse nimportant)
List list = (List) mListOfSomething.get(SOME_ENUMS);
if (list == null)
// dont ask me why not list.isEmpty(), I'm not the author of this code)
list = new ArrayList();
if (transaction.getPartner() instanceof IAnotherSomething) {
IAnotherSomething ias = (IAnotherSomething) transaction.getPartner();
return ias.getContract().next();
}
// NIMPORTANT code ommited, produces boolean "something"
if (something) {
// something happens
list.add(contract)
}
if (!something) {
// something else happens
list.add(contract)
}
}
return (IContract) list.get(0);
}
我很头疼 - 如果列表为空,(或 == null)并且此 if 语句 (transaction.getPartner() instanceof IAnotherSomething)
为真,则该方法应该在此 if 语句上退出并且应该 return ias.getContract().next()
- 还是我错了?
A return 语句结束方法的执行,return将指定的值传递给方法的调用者,无论它位于方法中的何处。它是否在 "complex if statement".
内并不重要在一些特殊情况下,return 语句不会是方法中执行的最后一条语句:
return 语句包含在包含 finally 块的 try 子句中,该语句将在 return 从方法中执行之前执行。
return 语句包含在一个 try 子句中,表达式的求值被 returned 抛出一个被 catch 块捕获的异常,它将被执行(并且必须有一个 return 语句或抛出异常)。