[kotlin] 코틀린 리플렉션을 이용한 프로퍼티 접근

코틀린에서 리플렉션(Reflection)을 이용하면 객체의 내부 구조에 접근할 수 있습니다. 이를 통해 프로퍼티나 메서드를 동적으로 조작할 수 있습니다. 이번 포스트에서는 코틀린에서 리플렉션을 이용하여 프로퍼티에 접근하는 방법을 알아보겠습니다.

클래스와 프로퍼티 생성

먼저, 간단한 User 클래스와 그 안에 nameage 두 개의 프로퍼티를 정의해 보겠습니다.

class User(val name: String, var age: Int)

리플렉션을 이용한 프로퍼티 접근

이제 위에서 정의한 User 클래스를 사용하여 리플렉션을 통해 프로퍼티에 접근해 봅시다.

import kotlin.reflect.full.memberProperties
import kotlin.reflect.full.primaryConstructor

fun main() {
    val user = User("Alice", 30)
    
    // 모든 프로퍼티에 대한 정보 가져오기
    val properties = User::class.memberProperties
    for (prop in properties) {
        println("${prop.name} = ${prop.get(user)}")
    }
    
    // 생성자 파라미터 기반으로 인스턴스 생성
    val userConstructor = User::class.primaryConstructor
    val instance = userConstructor!!.call("Bob", 25)
    println(instance)
}

위 예제에서는 kotlin.reflect.full 라이브러리를 사용하여 User 클래스의 프로퍼티와 생성자에 접근했습니다. memberProperties를 이용하여 모든 프로퍼티에 대한 정보를 가져오고, primaryConstructor를 이용하여 생성자 정보에 접근하여 인스턴스를 생성했습니다.

이렇게 코틀린에서 리플렉션을 이용하여 프로퍼티에 접근하는 방법을 알아보았습니다.

결론

코틀린의 리플렉션을 이용하면 프로퍼티나 메서드에 동적으로 접근이 가능합니다. 이를 통해 프로그램의 유연성을 높일 수 있으며, 특정 상황에서 유용하게 활용될 수 있습니다.

리플렉션에 대한 보다 자세한 내용은 코틀린 공식 문서에서 확인할 수 있습니다.