[kotlin] 애노테이션을 활용한 컴파일 타임 체크

애노테이션(annotation)은 컴파일러에게 코드에 대한 추가 정보를 제공하는 데 사용됩니다. 코틀린에서 애노테이션은 코드의 의도를 명확히 표현하고, 컴파일 타임에 오류를 방지하는 데 도움을 줍니다.

애노테이션의 정의

코틀린에서 애노테이션은 @ 기호로 시작하여 선언됩니다. 다음은 간단한 애노테이션의 예시입니다.

annotation class ExampleAnnotation

애노테이션의 활용

코틀린에서 애노테이션은 여러 가지 목적으로 활용될 수 있습니다. 몇 가지 주요한 용도는 다음과 같습니다.

1. 컴파일 타임 체크

애노테이션을 사용하여 컴파일 타임에 코드의 일관성을 검사할 수 있습니다. 예를 들어, 다음과 같이 애노테이션을 사용하여 널 (null) 값의 체크를 할 수 있습니다.

annotation class NotNull

fun processData(@NotNull data: String) {
    // data 처리 로직
}

위의 @NotNull 애노테이션을 사용하면 processData 함수에 널 값이 전달되는 것을 방지할 수 있습니다.

2. 런타임 시 메타데이터 활용

애노테이션을 사용하여 런타임 시 메타데이터를 얻을 수 있습니다.

annotation class ApiEndpoint(val url: String)

@ApiEndpoint("/api/data")
fun fetchData() {
    // API 호출 로직
}

위의 예시에서 @ApiEndpoint 애노테이션을 이용하여 fetchData 함수의 API 엔드포인트를 정의하고, 런타임 시 해당 정보를 얻을 수 있습니다.

3. 코드 생성

애노테이션을 사용하여 코드를 생성할 수 있습니다.

annotation class GenerateClassName(val name: String)

@GenerateClassName("MyGeneratedClass")
class MyClass {
    // 클래스 구현
}

위의 @GenerateClassName 애노테이션을 사용하면 컴파일러가 해당 애노테이션이 붙은 클래스의 이름을 MyGeneratedClass로 설정할 수 있습니다.

결론

애노테이션을 활용하면 코드의 일관성을 유지하고 컴파일 타임에 오류를 방지할 수 있습니다. 또한, 런타임 시 메타데이터를 활용하거나 코드를 생성하는 등의 다양한 용도로 활용할 수 있습니다. 애노테이션을 적절히 활용하여 좀 더 견고하고 유연한 코드를 작성할 수 있습니다.

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