Java 憑藉其強大的物件導向程式設計功能,為程式設計師提供了多種機制來開發靈活且高效的程式碼。其中一個經常被忽略但至關重要的概念是變異數。了解變異數對於掌握 Java 至關重要,尤其是在使用泛型和集合時。本文深入探討了 Java 中的方差,涵蓋其類型(協方差、逆變和不變)及其實際應用。
理解方差
變異數是指更複雜型別之間的子型別與其元件之間的子型別之間的關係。簡單來說,它決定了當這些類別用作類型參數時如何保留類別的類型層次結構。在處理泛型時,變體變得特別重要,它提供了一個框架來確保類型安全,同時允許賦值具有一定程度的靈活性。
方差可以分為三種主要類型:
協方差 - 如果 ClassB 是 ClassA 的子類,則 Collection 可以視為 Collection 的子類。
逆變 - 如果 ClassB 是 ClassA 的子類,則 Collection 可以被視為 Collection 的子類。 p>
-
不變性 - Collection 和 Collection 沒有子型別關係,無論 ClassA 和 ClassB 之間的關係為何。
讓我們更深入地研究每個概念。
Java 中的協方差
在 Java 中,協變是透過使用通配符和 extends 子句來實現的。讓我們考慮一個例子 -
List<Animal> animals = new ArrayList<>();
<List<super Cat>cats=animals;
在這種情況下,您可以將Cat 物件或其任何實例新增至cats,但您無法從cats 讀取並將結果視為Cat,因為它可能包含Cat 的任何超類型,包括Animal 或Object 。因此,您可以寫入 cats,但無法以類型安全的方式讀取它
Java 中的不變性
不變性是 Java 中的預設行為,表示 Collection 和 Collection 之間不存在子型別關係,無論 ClassA 和 ClassB 之間的關係為何。這可能看起來有限制,但它對於類型安全至關重要。在 Java 中,List 不是 List
#
以上是Java中的方差的詳細內容。更多資訊請關注PHP中文網其他相關文章!