한윤석 개발 블로그

배운 것을 적는 블로그입니다.

Kotlin에서 refied란 무엇인가요?

등록일: 2024-07-01
수정일: 2024-07-01

Kotlin과 Java에서는 제네릭을 사용할 때 컴파일러가 타입을 제거합니다. 그래서 런타임에는 제네릭 타입을 인식할 수 없습니다. 이를 타입 소거(type erasure)라고 합니다.

fun <T> printType() {
    println(T::class.java) // 컴파일 오류 발생
}

하지만 코틀린 인라인 함수는 함수의 바디가 호출되는 곳에 복사되기 때문에, 컴파일 타임에 타입 정보를 유지할 수 있습니다.

inline fun <reified T> printType() {
    println(T::class.java) // class java.lang.String

}

fun main() {
    printType<String>()
}

따라서 refieid는 인라인 함수에서만 사용할 수 있고, 런타임에 제네릭 타입 정보를 활용할 때 사용할 수 있습니다.

참고


자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기

코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!