即使在复杂的IF语句中,RETURN是否随时都会使用该方法?

时间:2015-01-22 12:25:34

标签: java if-statement 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语句上退出并应返回ias.getContract().next() - 或者我错了吗?

1 个答案:

答案 0 :(得分:5)

return语句结束方法的执行,将指定的值返回给方法的调用者,无论它放在方法中的什么位置。如果它出现在"复杂的if语句中并不重要"。

这是一些特殊情况,其中return语句不会成为该方法中执行的最后一个语句:

  1. return语句包含在包含finally块的try子句中,该块将在从方法返回之前执行。

  2. return语句包含在try子句中,并且要返回的表达式的求值会抛出一个catch块捕获的异常,该异常块将被执行(并且必须具有return语句或抛出异常) )。