[kotlin] 코틀린 리플렉션의 개념

코틀린은 자바와 같이 객체의 정보를 동적으로 조사하고 조작할 수 있는 리플렉션(Reflection)을 지원합니다. 리플렉션이란 프로그램이 자기 자신을 조사하거나 수정할 수 있는 능력을 말합니다. 이 기능을 사용하면 실행 중인 코드에 대한 정보를 얻거나 수정할 수 있어, 동적으로 객체를 생성하고 클래스의 멤버에 접근할 수 있습니다.

코틀린 리플렉션을 사용하는 이유

코틀린 리플렉션은 다음과 같은 상황에서 유용합니다.

예제

코틀린에서 리플렉션을 사용하는 간단한 예제를 살펴보겠습니다. 아래는 클래스의 이름과 메소드 이름을 동적으로 가져오는 예제 코드입니다.

import kotlin.reflect.full.*

class Person(val name: String, val age: Int) {
    fun sayHello() {
        println("Hello, my name is $name")
    }
}

fun main() {
    // 객체 생성
    val person = Person("Alice", 25)
  
    // 동적으로 클래스 이름과 메소드 이름 가져오기
    val kClass = person.javaClass.kotlin
    println("Class name: ${kClass.simpleName}")
    kClass.members.forEach {
        println("Member name: ${it.name}")
    }
}

위 예제에서는 kotlin.reflect.full.* 라이브러리의 KClass 타입을 사용하여 객체의 클래스 정보를 가져오고, members 프로퍼티를 사용하여 클래스의 멤버들을 동적으로 조사합니다.

결론

코틀린의 리플렉션을 활용하면 객체의 정보를 동적으로 조사하고 조작할 수 있어 매우 강력한 기능을 제공합니다. 그러나 과도한 리플렉션 사용은 성능에 영향을 미치고 코드의 가독성을 떨어뜨릴 수 있으므로 신중하게 활용해야 합니다.

참고 자료: 코틀린 공식 문서 - 리플렉션