728x90
코틀린을 배우면서 느끼는 거지만 이 언어는 안전성을 최우선으로 두고 있는 것 같다.
var orderList = ArrayList<Drink>()
var coffee= Drink()
var tea= Drink()
orderList += coffee // 들어간다
orderList += tea // 들어간다
var cat = Animal()
orderList += cat // 안들어간다
하다보니 다른 타입의 객체를 한 리스트에 넣게 되었는데 컴파일에서 빨간 색으로 안된다고 표시를 해준다. 원시타입과 스트링 같은 경우는 같은 리스트에 넣을려면 컴패러블이라는 타입으로 둘 다 넣을 수 있어서 될 줄 알았는데 안되더라....
왜 안되나 검색해보았다.
공변성과 반공변성
모든 타입을 넣을 수 있는 제너릭타입을 찾다가 나온 내용이다. 우선 이게 답인지도 모르겠다. 아예 다른 이유때문일 수도 있고... 일단 해당 문제는 공통을 뽑아 부모클래스로 만들고 부모클래스를 리스트타입으로 바꾼 다음에 넣으니 잘 작동했다.
얘기가 다른 데로 빠져버렸다. 파고 들자면 한없이 복잡하지만... 내가 이해한 바로는 안전성때문이다.
한 리스트 안에 다른 타입의 객체가 있을 경우 오류가 날 가능성이 매우 크니 사전에 차단하는 것이다.
728x90
반응형
'개발' 카테고리의 다른 글
TIL : 코틀린 기초 (1) | 2023.12.11 |
---|---|
TIL: 프로그래머스 달리기 경주, 시간복잡도(Time Complexity) (0) | 2023.12.08 |
TIL: 클래스와 객체 (2) | 2023.12.06 |
TIL: 코틀린 readLine(), readln(), 숫자만 입력하기 (1) | 2023.12.05 |
TIL: git clone, git branch, git switch , data class , 생성자 ,상속, 인터페이스 (1) | 2023.12.04 |
댓글