클래스, 함수, 프로퍼티 등의 참조를 표현하는 데 사용
객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법
KClass 타입의 객체로, 클래스의 메타데이터(예: 클래스 이름, 프로퍼티, 메서드 등)에 접근할 수 있다.
KClass 타입
Kotlin에서 클래스의 정보를 표현하는 타입
클래스의 이름(패키지 포함/미포함), 멤버, 생성자 등에 접근 가능
기본 생성자가 있는 경우 인스턴스를 생성가능
해당 클래스에 작성된 모든 것에 접근 가능
Java의 Class<T>와 유사val stringClass: KClass = String::class
val wishClass = Wish::class
println(wishClass.simpleName) // "Wish"
fun greet(name: String) = "Hello, $name"
val greetFunction = ::greet
println(greetFunction("John")) // "Hello, John"
val name = "Kotlin"
val nameRef = ::name
println(nameRef.get()) // "Kotlin"
@Database(entities = [Wish::class], version = 1)
abstract class WishDatabase : RoomDatabase() {
abstract fun wishDao(): WishDao
}