
자바 중급 문법 – 어노테이션 – 2 – 커스텀 어노테이션
안녕하세요! 자바 중급 문법 시리즈 두 번째 포스트입니다. 이번에는 어노테이션 중에서도 커스텀 어노테이션에 대해 알아보도록 하겠습니다. 어노테이션은 자바에서 소스 코드에 메타데이터를 추가하는 방법으로, 컴파일러와 런타임 환경에서 사용됩니다. 커스텀 어노테이션은 개발자가 직접 만들어 사용하는 어노테이션으로, 특정 상황이나 조건에 대한 표시를 할 수 있습니다.
1. 커스텀 어노테이션의 정의와 사용법
커스텀 어노테이션은 @interface
키워드를 사용하여 정의됩니다. 이렇게 정의된 어노테이션은 클래스, 메소드, 필드 등에 적용될 수 있으며, 런타임 시에도 정보를 유지할 수 있습니다. 예시를 통해 살펴보겠습니다.
// 커스텀 어노테이션 정의
public @interface CustomAnnotation {
String value() default "";
int count() default 0;
}
위의 예시에서 CustomAnnotation
은 커스텀 어노테이션의 이름입니다. 이 어노테이션은 value()
와 count()
라는 두 개의 속성을 가지고 있습니다. default
키워드를 사용하여 각 속성의 기본값을 설정할 수 있습니다.
이제 이 커스텀 어노테이션을 사용하는 예시를 살펴보겠습니다.
// 어노테이션 적용 예시
@CustomAnnotation(value = "Hello", count = 3)
public class CustomAnnotationExample {
@CustomAnnotation(value = "World", count = 5)
public void printMessage() {
// 메소드의 구현 내용
}
}
위의 예시에서는 CustomAnnotation
을 클래스와 메소드에 적용하고 있습니다. 클래스에 적용된 어노테이션은 해당 클래스에 대한 메타정보를 나타내며, 메소드에 적용된 어노테이션은 해당 메소드에 대한 메타정보를 나타냅니다.
2. 커스텀 어노테이션의 활용 예시
커스텀 어노테이션은 다양한 상황에서 유용하게 활용될 수 있습니다. 예를 들어, 특정 조건을 만족하는 메소드의 실행 시간을 측정하고자 할 때 커스텀 어노테이션을 사용할 수 있습니다.
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MeasureExecutionTime {
}
위의 예시는 메소드 실행 시간을 측정하는 MeasureExecutionTime
이라는 커스텀 어노테이션입니다. @Retention
어노테이션은 어노테이션의 보존 범위를 설정하는 데 사용되며, @Target
어노테이션은 어노테이션의 적용 대상을 설정하는 데 사용됩니다. @Retention
은 런타임에도 어노테이션 정보를 유지해야 하므로 RetentionPolicy.RUNTIME
을 지정합니다. @Target
은 해당 어노테이션을 메소드에 적용할 수 있도록 ElementType.METHOD
를 지정합니다.
이제 이 어노테이션을 사용하여 메소드 실행 시간을 측정하는 예시를 살펴보겠습니다.
public class ExecutionTimeExample {
@MeasureExecutionTime
public void performTask() {
long startTime = System.nanoTime();
// 작업 수행
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.println("메소드 실행 시간: " + duration + " ns");
}
}
위의 예시에서 performTask()
메소드에 @MeasureExecutionTime
어노테이션을 적용하여 실행 시간을 측정하고 출력하고 있습니다. 이렇게 커스텀 어노테이션을 사용하면 코드의 가독성을 높이고, 특정 동작을 자동으로 수행할 수 있습니다.
주의해야 할 점
커스텀 어노테이션을 사용할 때 주의해야 할 몇 가지 사항이 있습니다.
- 어노테이션의 목적에 맞는 이름을 지정해야 합니다. 다른 개발자들이 코드를 이해하기 쉽도록 직관적인 이름을 선택하는 것이 좋습니다.
- 어노테이션의 적용 범위를 명확히 정의해야 합니다. 클래스, 메소드, 필드 등 어노테이션의 적용 대상을 명시하여 의도한 대상에만 적용되도록 해야 합니다.
- 어노테이션의 속성을 적절하게 활용해야 합니다. 필요한 정보를 속성으로 추가하여 사용자가 유연하게 활용할 수 있도록 해야 합니다.
- 커스텀 어노테이션을 정의할 때,
@Retention
과@Target
어노테이션을 올바르게 설정해야 합니다. 유지 범위와 적용 대상을 명확히 지정하여 원하는 동작을 수행할 수 있도록 해야 합니다.
이러한 주의사항을 염두에 두고 커스텀 어노테이션을 사용하면, 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.
이제 자바 중급 문법의 어노테이션에 대한 포스팅을 마무리하겠습니다. 커스텀 어노테이션을 사용하여 코드에 메타데이터를 추가하고 유연한 동작을 구현하는 방법에 대해 알아보았습니다. 자바 프로그래밍에서 어노테이션은 매우 유용한 기능이므로, 적재적소에 적절하게 활용하시기 바랍니다.
더 많은 자바 중급 문법과 어노테이션에 대한 내용은 계속해서 포스팅할 예정이니 많은 관심 부탁드립니다.
행운을 빕니다!