我有这样的代码:
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语句上退出并应返回ias.getContract().next()
- 或者我错了吗?
答案 0 :(得分:5)
return语句结束方法的执行,将指定的值返回给方法的调用者,无论它放在方法中的什么位置。如果它出现在"复杂的if语句中并不重要"。
这是一些特殊情况,其中return语句不会成为该方法中执行的最后一个语句:
return语句包含在包含finally块的try子句中,该块将在从方法返回之前执行。
return语句包含在try子句中,并且要返回的表达式的求值会抛出一个catch块捕获的异常,该异常块将被执行(并且必须具有return语句或抛出异常) )。