想像一個場景,方法的執行遍歷 try-finally 區塊中的多個 return 語句。一個自然的問題出現了:哪個 return 語句最終決定了方法的最終回傳值?為了深入研究這個謎團,讓我們分析一個特定的程式碼片段:
String test() { try { return "1"; } finally { return "2"; } }
其中的關鍵在於了解呼叫 test() 的回傳值是否在所有 Java 虛擬機 (JVM) 中一致。 Java 語言規格掌握著解開這個謎團的鑰匙。
根據 Java 語言規範,finally 區塊的回傳值會覆寫 try 區塊的回傳值。因此,無論使用哪種 JVM,「2」都明確指定為最終回傳值。
根據經驗,Sun JVM 遵守此規範,始終將「2」渲染為 test() 的回傳值。然而,值得注意的是,這種一致性不僅僅是 JVM 特有的怪癖。
規範明確要求它,任何偏離它的 JVM 都被視為不合規。因此,可以安全地斷言,在任何符合規範的 JVM 中,最終傳回值始終為「2」。
雖然規範提供了明確的說明返回值行為,強烈建議不要在單一方法中使用多個回傳值。這種編碼實踐會帶來不必要的混亂並違反基本編碼原則。
編譯器通常會針對這種有問題的方法發出警告,例如 Eclipse 斷言 test() 的回傳區塊永遠不會執行(錯誤)。擁抱語言規範的智慧並避免這些令人厭惡的編碼。
以上是哪個回傳語句占主導地位:揭示 Try-Finally 區塊中的最終值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!