[kotlin] 코틀린 리플렉션을 이용한 어노테이션 정보 확인

리플렉션(reflection)을 사용하면 런타임 시점에 클래스, 메서드, 필드 등의 구조를 분석할 수 있습니다. 코틀린에서는 이를 위해 KClass, KFunction, KProperty 등의 클래스를 제공합니다. 이 기능을 활용하여 어노테이션(annotation) 정보를 확인하는 방법에 대해 알아보겠습니다.

1. 어노테이션과 리플렉션

어노테이션은 코드에 메타데이터를 추가하는 기능으로, @AnnotationName 형식으로 사용됩니다. 리플렉션을 이용하여 클래스나 메서드 등에 적용된 어노테이션 정보를 확인할 수 있습니다.

2. 어노테이션 정보 확인하기

어노테이션 정보를 확인하려면 해당 요소의 KClass 인스턴스를 얻은 후, annotations 속성을 통해 어노테이션 목록을 가져올 수 있습니다.

import kotlin.reflect.full.findAnnotation
import kotlin.reflect.KClass

@Target(AnnotationTarget.CLASS)
annotation class CustomAnnotation(val name: String)

@CustomAnnotation("Example")
class MyClass

fun main() {
    val kClass: KClass<*> = MyClass::class
    val annotation = kClass.findAnnotation<CustomAnnotation>()
    println(annotation?.name) // 출력: Example
}

위 코드에서 findAnnotation 함수를 사용하여 클래스 MyClass에 적용된 CustomAnnotation을 확인하고, 어노테이션에 정의된 name 속성 값을 출력하는 예제를 확인할 수 있습니다.

3. 요약

코틀린의 리플렉션 기능을 이용하면 런타임에 동적으로 클래스 및 멤버에 적용된 어노테이션 정보를 쉽게 확인할 수 있습니다. 이를 통해 다양한 유용한 기능을 구현할 수 있으며, 코드의 유연성을 향상시킬 수 있습니다.

이상으로, 코틀린 리플렉션을 이용한 어노테이션 정보 확인에 대해 알아보았습니다.