covariant

제네릭(Generics) - 공변(Covariant), 불공변(Invariant), 반공변(Contravariant)
1. 공변, 불공변, 반공변의 개념 🌂 변성(Variance)이란 타입의 계층 관계에서 서로 다른 타입 간에 어떠한 관계가 있는지를 나타내는 것이다. 변성의 3가지 종류인 공변(Covariant), 불공변(Invariant), 반공변(Contravariant)은 다음과 같은 특성을 가진다. 공변 S가 T의 하위 타입이면, S[]는 T[]의 하위 타입이다. 불공변 List와 List는 관계가 없다. 반공변 S가 T의 하위 타입이면, T[]는 S[]의 하위 타입이다. 2. 제네릭은 공변성이 없다. ☔ 자바에서 배열은 공변이고, 제네릭은 불공변이다. 즉, 객체 타입의 관계에서 A가 B의 하위 타입일 때, 배열 A[]는 B[]의 하위 타입이지만 Listsms List의 하위 타입이 아니다. public stat..