首頁 > Java > java教程 > 「super」關鍵字如何影響 Java 泛型中的型別安全性和使用?

「super」關鍵字如何影響 Java 泛型中的型別安全性和使用?

Linda Hamilton
發布: 2024-11-25 14:24:11
原創
221 人瀏覽過

How Does the `super` Keyword Affect Type Safety and Usage in Java Generics?

Java 泛型:深入研究「Super」關鍵字

泛型允許開發人員透過引入類型參數來編寫更靈活、可重用的程式碼。泛型的一方面是在類型邊界中使用“super”關鍵字。

集合聲明中的Super

使用帶“super”的有界通配符聲明集合時',如:

List<? super Number> list = null;
登入後複製

它指定集合可以保存類型為Number 子類型的元素。然而,這並不意味著它可以容納 Number 的任何超類型。在這種情況下,會觀察到以下行為:

  • list.add(new Integer(0)) 編譯並正常運作。 Integer 是 Number 的子類型,因此可以將其新增至清單。
  • list.add(new Object()) 無法編譯。 Object 是 Number 的超類型,但清單未宣告為保存 Number 的超類型。

'Super' 關鍵字和類型安全

考慮以下內容code:

static void test(List<? super Number> param) {
  param.add(new Integer(2));
}

public static void main(String[] args) {
  List<String> sList = new ArrayList<String>();
  test(sList);
}
登入後複製

直觀上,程式碼似乎應該編譯,因為String 也是數字。但是,由於類型安全的原因,這是不允許的。 Java 強制執行類型安全性以防止執行階段錯誤。將 String 新增至聲明為僅包含 Number 子類型的清單中會違反型別安全性。

為什麼不使用 ''構造?

Java 不允許同時使用「super」和「extends」關鍵字進行類型限制,因為這會導致類型約束衝突並難以確保類型安全。例如,如果「」被允許,並且您聲明了 List,則不清楚 'S' 是 'T' 的子類型還是超類型。

泛型中 'super' 的關鍵注意事項

  • 帶有 'super' 的有界通配符捕獲指定的子類型類型。
  • 類型安全規定加入到超級有界集合的元素必須是指定類型的子類型。
  • 由於潛在類型,'super' 和 'extends' 不能在類型邊界中組合違反安全規定。

以上是「super」關鍵字如何影響 Java 泛型中的型別安全性和使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板