PHpullh
학습 라이브러리/Kotlin/어노테이션 (Annotations)

KOTLIN · 기초 문법

어노테이션 (Annotations)

Kotlin 어노테이션은 메타데이터를 코드에 첨부합니다. 커스텀 어노테이션을 정의하고 리플렉션으로 읽을 수 있습니다.

기초 문법중급annotationreflectionmetadatajvm

핵심 설명

Kotlin 어노테이션은 메타데이터를 코드에 첨부합니다. 커스텀 어노테이션을 정의하고 리플렉션으로 읽을 수 있습니다.

Kotlin code

@Target(AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
annotation class Logged(val tag: String = "DEFAULT")

@Logged(tag = "SERVICE")
fun processOrder(id: Int): String {
    return "주문 $id 처리 완료"
}

fun main() {
    val func = ::processOrder
    val annotation = func.annotations
        .filterIsInstance<Logged>()
        .firstOrNull()

    annotation?.let {
        println("태그: ${it.tag}")
    }

    // @JvmStatic, @JvmOverloads 등 Java 연동
    println(processOrder(42))
}

학습 팁

@JvmStatic, @JvmOverloads, @JvmField는 Java 코드와의 상호운용성을 높이는 핵심 어노테이션입니다.

주의할 점

AnnotationRetention.SOURCE로 지정하면 런타임에 리플렉션으로 읽을 수 없습니다. 런타임 접근이 필요하면 RUNTIME을 사용하세요.

자주 묻는 질문

어노테이션 (Annotations)란 무엇인가요?

Kotlin 어노테이션은 메타데이터를 코드에 첨부합니다. 커스텀 어노테이션을 정의하고 리플렉션으로 읽을 수 있습니다.

어노테이션 (Annotations) 학습 시 주의할 점은 무엇인가요?

AnnotationRetention.SOURCE 로 지정하면 런타임에 리플렉션으로 읽을 수 없습니다. 런타임 접근이 필요하면 RUNTIME 을 사용하세요.