본문 바로가기

무공변

[코틀린] 코틀린 제너릭 안녕하세요 남갯입니다. 오늘은 저번에 정리한 변성에 대해 이해가 부족한것 같아 코틀린 인 액션의 제너릭에 대해서 정리해보고 블로깅을 해보려고합니다, 제너릭스 타입 소거로 인해 실행시점에서 제너릭의 클래스의 인스턴스의 타입인자 정보가 들어가 있지 않다.JAVA의 JVM 제너릭스는 타입소거를 이용해서 구현된다. 이는 실행시점에 제너릭 클래스의 인스턴스의 타입 인자 정보가 들어있지 않다.컴파일러는 List와 List을 서로 다른타입이라 인식하지만 실행시점에서의 둘은 완전히 같은 타입의 객체이다.따라서 문자열로 이루어진 List이 어떤 타입을 가진 리스트인지 실행시점에는 검사할 수 없음. 따라서 if(value is List)을 실행시점에는 알 수 없음. List인지의 여부는 확실하게 알수있지만 타입을 알 수없..
[kotlin] 제너릭 변성(variance) 정리 안녕하세요 남갯입니다 오늘은 제너릭 타입에대해 정리해보려고합니다 SubType 이란? subType이란 어떤 class가 다른클래스를 상속받은것을 의미한다. 즉 타입 A가 필요한 곳에 타입 B 값을 넣어도 문제가 없다면 B는 A의 하위타입인 것이다. 예를들어 open class A() { val x = 0 val y = 1 } class B : A(){ val z = 2 } 와 같이 B는 A를 상속받았으므로 A의 subType이다. var a = A() var b = B() a = b는 가능하지만 var a = A() var b = B() b = a는 mismatch가 난다. 즉 A타입이 필요한곳에 B를 넣었는데 문제가 없으므로 B 는 A의 SubType인것이다. 무공변성(invariance) 제너릭타입..