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

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

Barbara Streisand
Barbara Streisand原創
2024-11-02 06:25:29894瀏覽

Why is

泛型型別參數邊界中的擴充與實作

問題:

在Java 中,為什麼「擴充T ”允許定義類型參數邊界,但不允許“implements T”?

例如,禁止使用以下程式碼:

<code class="java">public interface C {}
public class A<B implements C> {}</code>

雖然此程式碼有效:

<code class="java">public class A<B extends C> {}</code>

答案:

答案:
  • 答案:
  • 答案:

答案:>從語義上講,通用約束語言中的「擴展」和「實現」之間沒有區別。約束的可能性僅限於“extends”和“super”,反映了繼承或賦值相容性的方向。 extends T:與型別參數相關的類別可以是指派給型別 T 或從型別 T 擴充。 super T:與型別參數相關的類別可以從型別 T 指派。 在在無效程式碼範例的情況下,它嘗試使用「implements」來定義型別參數 B 的限制。但是,“implements”不是有效的約束類型,因此不允許。

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

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