首頁 >Java >java教程 >項目 明智地使用超載

項目 明智地使用超載

王林
王林原創
2024-09-06 06:00:02746瀏覽

過載問題:

  • 方法重載(如 CollectionClassifier 程式的範例)可能會導致意外行為,因為要根據參數類型選擇要呼叫的方法是在編譯時發生的,而不是在執行時發生的。

過載與覆蓋:

  • 重載是在編譯時選擇方法,而重寫是在運行時根據類型選擇正確的方法,這使得行為更加可預測。

避免混亂的開銷:

  • 當不清楚將為一組參數呼叫哪個方法時,重載會讓程式設計師感到困惑。這在公共 API 中尤其成問題。

推薦:

  • 避免匯出兩個具有相同數量參數的重載。
  • 以不同的方式命名方法而不是重載(如 writeInt 和 writeBoolean)。
  • 使用可變參數時,避免重載。

泛型與自動裝箱案例:

  • Java 中泛型和自動裝箱的引入導致了重載問題,如 List.remove 的範例所示,由於存在多個重載,它的行為可能會令人困惑。

函數式介面與 lambda:

  • Java 8 中新增的 lambda 透過重載採用函數式介面的方法而增加了混亂的風險,特別是當這些介面不是「根本不同」時。

實用解決方案:

  • 使用instanceof進行明確測試可以避免與重載相關的問題。
  • 使用完全不同的參數(無法相互轉換的類型)進行重載可以避免混淆。
  • 建構函式與重載:雖然建構函式總是重載,但使用靜態工廠可以避免這種複雜性。

合理的例外:

  • 在某些情況下,例如改編舊類,可能需要重載,但必須謹慎使用,確保使用相同參數呼叫時重載方法的行為相同。

結論:

  • 應謹慎使用重載。雖然技術上可行,但通常最好以不同的方式命名方法或避免混淆重載,以確保程式碼更清晰、更可預測。

書中的範例:

Item  Utilize a sobrecarga com critério

Item  Utilize a sobrecarga com critério

Item  Utilize a sobrecarga com critério

Item  Utilize a sobrecarga com critério

Item  Utilize a sobrecarga com critério

以上是項目 明智地使用超載的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn