[java] 자바 어노테이션(Java annotations)

자바 어노테이션은 자바 소스 코드에 메타데이터(Metadata)를 추가하기 위한 방법으로, 컴파일러에게 추가적인 정보를 제공하거나 런타임에 프로그램 동작을 변경할 수 있습니다. 어노테이션은 @ 기호를 사용하여 선언하며, 클래스, 메소드, 필드 등 다양한 요소에 적용할 수 있습니다.

내장 어노테이션(Built-in annotations)

자바에서는 이미 여러 내장 어노테이션들이 제공되고 있습니다. 대표적인 내장 어노테이션들은 다음과 같습니다:

커스텀 어노테이션(Custom annotations)

여러분은 자신만의 어노테이션도 정의할 수 있습니다. 커스텀 어노테이션을 정의하기 위해서는 @interface 키워드를 사용하여 어노테이션을 선언합니다. 예를 들어, 다음은 @RunWith 어노테이션의 간단한 구현 예시입니다:

public @interface RunWith {
    Class<?> value();
}

커스텀 어노테이션은 필요한 매개변수를 가질 수 있으며, @Retention을 사용하여 어노테이션의 유지 정책을 설정할 수도 있습니다.

어노테이션 프로세서(Annotation Processors)

어노테이션 프로세서는 컴파일 타임에 어노테이션을 처리하는 도구입니다. 이를 통해 어노테이션에 지정된 정보를 알아내거나 코드를 생성할 수 있습니다.

자바 6부터는 javax.annotation.processing 패키지를 사용하여 어노테이션 프로세서를 작성할 수 있습니다. 특정 어노테이션을 처리하기 위해 @SupportedAnnotationTypes 어노테이션을 사용하여 프로세서가 처리할 어노테이션을 명시하고, process() 메소드에서 실제 처리 작업을 수행합니다.

@SupportedAnnotationTypes("com.example.MyAnnotation")
public class MyAnnotationProcessor extends AbstractProcessor {
    @Override
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
        // 어노테이션 처리 작업 수행
        return true;
    }
}

결론

자바 어노테이션은 자바 개발의 다양한 측면에서 유용하게 사용될 수 있습니다. 내장 어노테이션을 활용하거나 커스텀 어노테이션을 정의하여 코드의 가독성과 유지 보수성을 향상시킬 수 있습니다. 또한 어노테이션 프로세서를 활용하여 자동화된 코드 생성 등의 작업을 수행할 수 있습니다.

더 자세한 내용은 공식 Java 문서를 참고하시기 바랍니다.