noinline (2) 썸네일형 리스트형 코틀린(Kotlin) - 런타임에서의 제네릭의 동작 알고 계시겠지만 JVM의 제네릭은 보통 타입 소거(type erasure)를 사용해서 구현됩니다. 타입 소거(type erasure) - 원소 타입을 컴파일 타임에만 검사하고 런타임에는 해당 타입 정보를 알 수 없는 것입니다. - 즉, 컴파일 타임에만 타입에 대한 제약 조건을 적용하고, 런타임에는 타입에 대한 정보를 제거한다는 뜻입니다. 이 말은 런타임에서 제네릭 클래스의 인스턴스에 타입 파라미터 정보가 들어있지 않다는 뜻입니다. 이번에는 코틀린 타입 소거가 어떤 영향을 끼치는지 살펴보고 함수를 inline으로 선언함으로써 이런 제약을 어떻게 우회할 수 있는지 확인하도록 하겠습니다. 먼저 결론부터 말씀드리자면, 함수를 inline으로 만들면 타입 파라미터가 소거되지 않게 할 수 있습니다. 런타임에서의 제.. 코틀린(Kotlin) - inline 함수 : 람다의 부가 비용 없애기 람다의 경우 컴파일 단계에서 파라미터 개수에 따라 FunctionN 형태의 인터페이스로 변환이 됩니다. 예를 들어 아래와 같이 파라미터가 두 개인 람다 식은 Function2 의 인터페이스로 변환이 되는 것을 알 수가 있습니다. fun calculator(x: Int, y: Int, operation: (Int, Int) -> Int) { operation(x, y) } /* 컴파일 시, FunctionN 형태의 인터페이스 구현 객체로 변환 */ public final void calculator(int x, int y, @NotNull Function2 operation) { Intrinsics.checkNotNullParameter(operation, "operation"); operation.inv.. 이전 1 다음