[kotlin] 코틀린 리플렉션을 이용한 중첩 클래스 접근

코틀린은 중첩 클래스에도 리플렉션을 적용할 수 있습니다. 중첩 클래스는 클래스 내부에 또 다른 클래스가 정의된 형태를 말합니다. 리플렉션은 실행 시간에 클래스의 정보를 검사하고 조작할 수 있는 기능을 말합니다. 이번 글에서는 코틀린에서 중첩 클래스에 리플렉션을 적용하는 방법에 대해 알아보겠습니다.

중첩 클래스란?

중첩 클래스는 다른 클래스 내부에 정의되는 클래스를 말합니다. 중첩 클래스는 외부 클래스의 멤버에 쉽게 접근할 수 있는 장점이 있습니다. 코틀린에서는 내부 클래스(inner class)와 중첩 클래스(nested class)로 나뉘는데, 내부 클래스는 외부 클래스의 인스턴스에 접근할 수 있지만, 중첩 클래스는 그럴 수 없습니다. 중첩 클래스는 정적인 성격을 띄므로 외부 클래스의 인스턴스에 대한 참조가 없습니다.

코틀린에서 중첩 클래스에 대한 리플렉션 사용하기

중첩 클래스에 대한 리플렉션을 사용하려면 KClass 객체를 얻어야 합니다. 내부 클래스와 중첩 클래스는 각각 다른 방식으로 KClass 객체를 얻어야 합니다.

내부 클래스의 KClass 객체를 얻으려면 외부 클래스의 인스턴스를 통해 접근해야 합니다. 예를 들어, 다음과 같이 내부 클래스의 KClass 객체를 얻을 수 있습니다.

val outerClass = OuterClass()
val innerClassKClass = outerClass.InnerClass::class

반면에 중첩 클래스의 KClass 객체를 얻으려면 클래스 이름 뒤에 ::class를 사용하여 직접 참조하면 됩니다.

val nestedClassKClass = OuterClass.NestedClass::class

이제 KClass 객체를 얻었으므로, 필요한 정보를 얻거나 조작할 수 있습니다. 예를 들어, 다음과 같이 중첩 클래스의 이름을 출력할 수 있습니다.

println(nestedClassKClass.simpleName)

마무리

코틀린에서는 중첩 클래스에 대한 리플렉션을 통해 실행 시간에 중첩 클래스의 정보를 얻거나 조작할 수 있습니다. 중첩 클래스를 다룰 때에는 내부 클래스와 중첩 클래스를 구분하여 KClass 객체를 얻는 방법을 기억하고 활용하는 것이 중요합니다.

코틀린 공식 문서 - 리플렉션

이상으로 코틀린 리플렉션을 이용한 중첩 클래스 접근에 대해 알아보았습니다. 감사합니다!