首頁  >  文章  >  Java  >  為什麼我無法在 Java 中建立通用數組?

為什麼我無法在 Java 中建立通用數組?

Susan Sarandon
Susan Sarandon原創
2024-10-28 22:15:31517瀏覽

 Why Can't I Create Generic Arrays in Java?

Java 中的泛型陣列

陣列和泛型在 Java 中造成了程式設計障礙。您無法直接建立參數類型陣列。這是因為陣列是協變的,這意味著它們在運行時保留其元素的類型,而泛型使用類型會擦除。

解決方法是使用 Array.newInstance(),如下所示:

private Comparable[] hashtable;

...

hashtable = (Comparable[])Array.newInstance(Comparable.class, tableSize);

但是,需要注意的是,這個解決方案並不理想。

為什麼不使用泛型陣列?

  • 陣列是協變的,但泛型不是.
  • 這表示超類型的陣列不一定是子類型的陣列。
  • 例如,Object[] 陣列不一定是 Comparable[] 陣列。

為了避免這些問題,建議使用泛型時使用 ArrayList 而不是陣列。 ArrayList 是協變且類型安全的,這使得它們成為儲存泛型類型的更好選擇。

更詳細的說明,請參閱 Java 泛型常見問題:

我可以建立一個元件類型為特定參數化類型的陣列嗎?

不可以,因為它不是類型安全的。

數組是協變的,這意味著超類型引用數組是子類型引用數組的超類型。也就是說,Object[] 是 String[] 的超類型,可以透過 Object[] 類型的引用變數來存取字串陣列。

以上是為什麼我無法在 Java 中建立通用數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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