[kotlin] 코틀린 리플렉션을 이용한 프로퍼티 접근
코틀린에서 리플렉션(Reflection)을 이용하면 객체의 내부 구조에 접근할 수 있습니다. 이를 통해 프로퍼티나 메서드를 동적으로 조작할 수 있습니다. 이번 포스트에서는 코틀린에서 리플렉션을 이용하여 프로퍼티에 접근하는 방법을 알아보겠습니다.
클래스와 프로퍼티 생성
먼저, 간단한 User
클래스와 그 안에 name
과 age
두 개의 프로퍼티를 정의해 보겠습니다.
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
를 이용하여 생성자 정보에 접근하여 인스턴스를 생성했습니다.
이렇게 코틀린에서 리플렉션을 이용하여 프로퍼티에 접근하는 방법을 알아보았습니다.
결론
코틀린의 리플렉션을 이용하면 프로퍼티나 메서드에 동적으로 접근이 가능합니다. 이를 통해 프로그램의 유연성을 높일 수 있으며, 특정 상황에서 유용하게 활용될 수 있습니다.
리플렉션에 대한 보다 자세한 내용은 코틀린 공식 문서에서 확인할 수 있습니다.