Java 泛型:深入研究「Super」關鍵字
泛型允許開發人員透過引入類型參數來編寫更靈活、可重用的程式碼。泛型的一方面是在類型邊界中使用“super”關鍵字。
集合聲明中的Super
使用帶“super”的有界通配符聲明集合時',如:
List<? super Number> list = null;
它指定集合可以保存類型為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」關鍵字如何影響 Java 泛型中的型別安全性和使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!