Covariance, invariance et contravariance expliquées en anglais simple
Introduction :
Comprendre la covariance, l'invariance, et la contravariance peuvent être difficiles, mais elles sont essentielles pour comprendre les transformations et les relations de types en Java. Cet article vise à simplifier ces concepts et à fournir des exemples concrets pour améliorer la compréhension.
Covariance :
La covariance décrit une transformation de type où la relation de sous-type est préservée. Si le type A est un sous-type du type B, alors la transformation f(A) fera que f(B) sera un sous-type de f(A).
Exemple :
Considérons une transformation f(List) = List
Invariance :
L'invariance se produit lorsque la relation de sous-type n'est pas affectée par les transformations de type. Si A est un sous-type de B, alors f(A) ne sera pas un sous-type ou un supertype de f(B).
Exemple :
Les génériques Java se comportent de manière invariante . Par exemple, f(ArrayList) = ArrayList. Depuis ArrayList et ArrayList sont des types différents, ni un sous-type ni un supertype de l'autre.
Contravariance :
La contravariance est l'inverse de la covariance. La relation de sous-type est inversée lors des transformations. Si A est un sous-type de B, alors f(B) sera un sous-type de f(A).
Exemple :
Considérons la transformation de type f(A[]) =B[]. En Java, les tableaux sont covariants, ce qui signifie que si A[] est un sous-type de B[], alors f(A[]) = B[] sera également un sous-type de f(B[]) = B[].
Applications :
La covariance, l'invariance et la contravariance jouent un rôle crucial dans Java :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!