[kotlin] 애노테이션의 Retention 정책 이해하기

RetentionPolicy는 애노테이션이 유지되는 방법을 나타냅니다. 기본적으로 애노테이션은 컴파일 이후에는 사라지지만, RetentionPolicy를 지정하면 다양한 유지 정책을 설정할 수 있습니다.

  1. SOURCE: 애노테이션은 컴파일 이후에 사라집니다. 따라서 실행 시에는 애노테이션 정보를 사용할 수 없습니다.
  2. CLASS: 애노테이션은 컴파일 후에도 유지되지만, 실행 시에는 사용할 수 없습니다. 따라서 리플렉션을 사용하여 애노테이션 정보를 읽을 수 없습니다.
  3. RUNTIME: 애노테이션은 컴파일 이후에도 유지되며, 실행 시에도 사용할 수 있습니다. 이 경우 리플렉션을 통해 애노테이션 정보를 읽고 처리할 수 있습니다.

예를 들어, 다음과 같이 RetentionPolicy를 사용하여 애노테이션 클래스에 유지 정책을 지정할 수 있습니다.

import kotlin.annotation.AnnotationRetention
import kotlin.annotation.Retention

@Retention(AnnotationRetention.SOURCE)
annotation class MyAnnotation

이 예에서 MyAnnotation 클래스는 SOURCE RetentionPolicy를 가지고 있으므로 컴파일 이후에 애노테이션 정보는 사라집니다.

이러한 RetentionPolicy를 이해하면 애노테이션을 사용할 때 어떻게 동작하는지 더 잘 이해할 수 있습니다.