자바 변성 (Variance) 자바의 가변성에는 크게 공변, 무공변, 반공변이 존재한다. 제네릭을 잘 사용하려면 이 가변성에 대한 이해가 필요하다. 변성을 제대로 이해하려면 "타입 S가 T의 하위 타입일 때, Box[S]가 Box[T]의 하위 타입인가?" 라는 질문에서 시작하는게 좋다. 배열은 공변, 제네릭은 무공변이 기본이라고 다들 알고 있을 것이다. 무공변 (Invariance) or 불공변 기본적으로 제네릭은 무공변이다. 무공변이라고 하니 헷갈리는것 같다. 사전적으로 번역해보면 불공변으로 나오게 된다. 타입 S가 T의 하위 타입일 때, Box[S]와 Box[T] 사이에 상속 관계가 없는 것 쉽게 말하면 너는너, 나는 나 인 느낌이다. 그래서 선언한 유형만 들어갈 수 있게 코드를 구성할 수 있다. O..