invariant1 공변, 반공변이란 무엇일까 공변, 반공변이란 무엇일까 변성(Variance) 자바 제네릭은 기본적으로 불변 String 은 Object 의 서브타입이다. 하지만, List 은 List 의 서브타입이 아니다. 즉 자바의 제네릭 타입은 불변(invariant) 이다. 변성(variance)이 없다. 불변임으로 인해서 나타나는 아래 문제점을 보자. 뭔가 이상한 addAll 코드 class Collection { void addAll(Collection items) { for (E e: src) { push(e); } } } void copyAll(Collection to, Collection from) { to.addAll(from); // compile error } copyAll메소드는 컴파일에러가 발생한다. 사실 copyAll 메.. 2022. 10. 27. 728x90 이전 1 다음