컬렉션(set, list, map) 타입에는 크게 두가지가 있다.
- read-only(immutable)
- read-only 컬렉션 타입은 공변적이다. 만약 Rectangle 클래스가 Shape 클래스를 상속했다면
List<Rectangle>은 List<Shape>을 사용할 수 있는곳 어디에서나 쓰일 수 있다.
- read-only 컬렉션 타입은 공변적이다. 만약 Rectangle 클래스가 Shape 클래스를 상속했다면
- mutable
- mutable 컬렉션은 공변적이지 않다. 공변적으로 사용할 경우 런타임 오류를 일으킬 수 있다.
만약 MutableList<Rectagle>이 MutableList<Shape>의 서브타입일 경우 Shape을 상속받은 다른 타입을 insert할 경우 Rectangle 타입으로 매개를 넣어야하는것을 위반할 수 있다. 🥕 - mutable 컬랙션을 사용한다고 반드시 var를 쓸 필요는 없다. val을 써도 .add해서 리스트를 수정할 수 있다.
어차피 참조된 번지수는 같기 때문이다. 그러나 초기화된 val에 mutableList를 메소드로 해서 새로 참조시키는건 컴플리에이션 에러가 난다.
- mutable 컬렉션은 공변적이지 않다. 공변적으로 사용할 경우 런타임 오류를 일으킬 수 있다.

컬렉션 타입들의 상속관계

'Kotlin' 카테고리의 다른 글
| 랜덤 수 추출 알고리즘 (0) | 2021.09.05 |
|---|---|
| 컬렉션2 ) 코틀린 컬렉션의 종류소개(List, Set, Map) (0) | 2021.08.28 |
| Scope Function (0) | 2021.08.21 |
| Kotlin vs Java (0) | 2021.08.21 |
| 데이터 타입 (0) | 2021.08.19 |