首頁  >  文章  >  Java  >  為什麼在類型參數邊界中允許“擴展 T”但不允許“實現 T”?

為什麼在類型參數邊界中允許“擴展 T”但不允許“實現 T”?

Linda Hamilton
Linda Hamilton原創
2024-11-02 11:52:02896瀏覽

Why is

為什麼在類型參數邊界中允許「extends T」但不允許「implements T」?

在 Java 中,定義型別邊界時參數,可以使用「extends T」但不能使用「implements T」。這看起來像是任意的區別,但它有一個根植於 Java 泛型實作的特定原因。

這種差異的原因在於繼承和實現的語意。在Java中,一個類別只能實作一個接口,但它可以擴充多個類別。因此,在類型參數邊界中使用「extends」可以更靈活地指定允許的類型。

範例:

考慮以下程式碼:

如果我們允許在類型參數邊界中“實作”,則此程式碼將有效。然而,這會引發類別 B 應該實作哪個介面的問題。由於在此上下文中不支援多個接口,因此會導致歧義。

另一方面,在邊界中使用「extends」可確保類別 B 必須是介面 C 的子類型。這是一個更通用的約束,不會引入任何歧義。

因此,透過限制介面類型參數邊界中「extends」的使用,Java 確保了其泛型實現的一致性和清晰性。

以上是為什麼在類型參數邊界中允許“擴展 T”但不允許“實現 T”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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