我有一個函數,在執行過程中,在debuger中同時運行if和return函數結束時的返回值。爲什麼這個java代碼執行多個返回語句
我感到困惑我認爲返回語句返回值,並停止在該方法中的執行流程?
我已經得到它的工作,但想知道爲什麼它這樣做。
下面是一個例子。 json將在答案和createapprove塊上失敗。它得到創建失敗和Ret成爲真(解析JSON)。返回retval運行,然後代碼跳轉到最終返回retval並將其作爲函數的返回值執行。
我正在使用在android模擬器上運行的程序在調試模式下遍歷ecipse中的代碼。
public static ComModelFromServer createModelFromJSON(String json) throws JSONInvalidException {
boolean ret = false;
ComModelFromServer retval = null;
//Answer Block
Answer a = new AnswerAsset();
ret = a.tryToParseFromJSON(json);
if(ret == true) {
retval = a;
return retval;
}
Create cr = new CreateApprove();
ret = cr.tryToParseFromJSON(json);
if(ret == true) {
retval = cr;
return retval;
}
cr = new CreateFail();
ret = cr.tryToParseFromJSON(json);
if(ret == true) {
retval = cr;
return retval;
}
if(ret == false) {
throw new JSONInvalidException("couldn't create model from JSON");
}
return retval;
}
我會添加每個tryToParseFromJSon可能會拋出一個JSONInvalidException,如果他們遇到了錯誤。 – huntsfromshadow 2011-05-05 20:39:28
爲什麼你分配retval然後返回?爲什麼不只是例如。返回cr? – EJP 2011-05-06 00:12:41