[kotlin] 애노테이션을 활용한 리플렉션 처리

애노테이션(annotation)은 코틀린에서 코드에 메타데이터를 추가하는 강력한 방법입니다. 런타임에 클래스나 메서드 등의 정보를 확인할 때 리플렉션(reflection)을 사용할 수 있습니다. 이 글에서는 코틀린에서 애노테이션과 리플렉션을 함께 사용하는 방법을 알아보겠습니다.

애노테이션 정의하기

annotation class MyAnnotation(val name: String, val age: Int)

위의 예시와 같이 annotation 키워드를 사용하여 애노테이션을 정의할 수 있습니다. 애노테이션을 사용하기 위해서는 @ 기호를 붙이고, 필요에 따라 매개변수를 지정할 수 있습니다.

애노테이션 적용하기

@MyAnnotation(name = "John", age = 30)
class MyClass {
    // 클래스 내용
}

클래스, 메서드, 변수 등에 @ 기호를 사용하여 애노테이션을 적용할 수 있습니다.

리플렉션을 통한 애노테이션 정보 조회하기

리플렉션을 사용하여 애노테이션 정보를 조회할 수 있습니다. 아래 코드는 클래스의 애노테이션 정보를 출력하는 예시입니다.

fun main() {
    val myClass = MyClass::class
    
    val annotation = myClass.annotations.find { it is MyAnnotation } as? MyAnnotation
    if (annotation != null) {
        println("Name: ${annotation.name}, Age: ${annotation.age}")
    }
}

위의 코드에서는 MyClass에 적용된 애노테이션 정보를 조회하여 출력하는 예시입니다.

결론

코틀린의 애노테이션과 리플렉션은 코드의 유연성을 높여주는 강력한 기능입니다. 애노테이션을 사용하여 메타데이터를 추가하고, 리플렉션을 통해 런타임에 이를 활용할 수 있습니다. 이를 통해 보다 다양하고 유연한 프로그래밍이 가능해집니다.

참고 자료: 코틀린 공식 문서