首頁 > Java > java教程 > 主體

Java 泛型\' super` 關鍵字如何與有界通配符一起使用,它有什麼限制?

Mary-Kate Olsen
發布: 2024-11-25 06:45:22
原創
925 人瀏覽過

How Does Java Generics' `super` Keyword Work with Bounded Wildcards, and What Are Its Limitations?

Java 泛型的super 關鍵字:了解其用法和限制

泛型允許自訂資料類型,從而擴展了Java 集合的功能,而無需犧牲型別安全。 super 關鍵字在這些泛型集合中起著至關重要的作用。

了解有界通配符

宣告泛型集合時,super 關鍵字可以與有界通配符一起使用。這種類型的通配符允許集合保存特定類型或其超類型。例如:

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

此聲明表示清單可以包含 Number 物件或其任何超類,例如 Object。

為有界通配符集合添加元素

需要注意的是,向有界通配符集合添加元素遵循嚴格的類型安全規則。在上面的範例中:

  • list.add(new Integer(0)) 有效,因為 Integer 擴充了 Number。
  • list.add(new Object()) 無效,因為 Object不是 Number 的子型別。

測試Super 的極限通配符

與預期相反,以下程式碼將無法編譯:

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); // Compile error
}
登入後複製

雖然String 是Object 的子類型,並且Object 是Number 的超類型,但此程式碼仍然失敗來編譯。原因是通配符捕獲了特定類型 Number(如 List super Number> 中定義)及其超類型,其中不包括 String。

為什麼Java 允許但不是

Java 不允許使用下限通配符(例如)的原因是Java 的型別系統。下界通配符允許建立可以包含給定類型的任何超類型的集合,這可能會導致不安全的轉換和類型違規。

總之,Java 泛型中的 super 關鍵字允許建立泛型可以保存特定類型或其超類型的物件的集合。了解與有界通配符相關的類型安全限制對於確保 Java 程式碼的有效性和正確性非常重要。

以上是Java 泛型\' super` 關鍵字如何與有界通配符一起使用,它有什麼限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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