「super」關鍵字如何影響 Java 泛型中的型別安全性和使用?
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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用IntelliJIDEAUltimate版本啟動Spring...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...
