不同回傳類型的重載
在程式設計中,重載允許類別或命名空間中存在同名但參數不同的函數。然而,在 Java 中,不可能僅根據返回類型來重載函數。
為什麼不行?
Java 編譯器依賴函式簽章與傳回型別來唯一識別一個函式。如果編譯器僅允許按返回類型進行重載,則會產生歧義。考慮以下範例:
<code class="java">public int foo() {...} public float foo() {..} ... foo(); // which one to call?</code>
在這種情況下,編譯器無法僅根據傳回類型決定要執行哪個 foo 方法。這種歧義會導致編譯錯誤。
Java 的未來
目前沒有計劃在未來的 Java 版本中更改此行為。 Java 語言規範明確指出「兩個方法不能有相同的簽名,即使它們有不同的回傳類型。」
C 注意事項
按回傳類型重載是在C 中也是不可能的。與 Java 類似,C 編譯器使用所有參數(包括傳回類型)來區分同名函數。這種方法確保特定的函數呼叫始終引用預期的實作。
以上是為什麼不能在 Java 中重載僅基於返回類型的方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!