자바 어노테이션
자바 어노테이션(Java Annotation)
ㅡ> 메타데이터(Metadata)를 제공하는 특수한 형식의 자바 코드
ㅡ> 어노테이션을 통해 코드의 동작이나 속성에 대한 정보를 컴파일러나 런타임 환경에 전달
ㅡ> 코드의 가독성을 높임
메타데이터
ㅡ> 코드 자체에 대한 추가적인 정보를 제공하는 데이터
ㅡ> 따라서 변수에 대한 어노테이션은 변수(필드) 위에, 클래스에 대한 어노테이션은 클래스 위에 위치
어노테이션 목적
- 컴파일러 지시
- 컴파일러에게 특정 경고를 무시하거나, 코드의 특정 부분이 의도된 것임을 알리는 등의 정보를 전달합니다.
- 예: @Override는 메서드가 상위 클래스의 메서드를 오버라이드하고 있음을 컴파일러에게 알려줍니다.
- 런타임 처리
- 런타임 시에 리플렉션(Reflection) 등의 기법을 사용하여 어노테이션 정보를 참조하고, 이를 기반으로 동작을 결정할 수 있습니다.
- 예: @Entity는 자바 클래스가 JPA(Entity Framework)에서 데이터베이스 테이블과 매핑됨을 나타냅니다.
- 코드 생성을 돕는 도구
- 일부 어노테이션은 코드 생성 도구가 특정 작업을 수행하도록 지시합니다.
- 예: @Getter와 @Setter는 Lombok 라이브러리에서 자동으로 게터와 세터 메서드를 생성하도록 합니다.
자바에서 자주 사용하는 어노테이션 예시
- @Override
- 상위 클래스의 메서드를 오버라이드한다는 것을 명시적으로 표현합니다.
- @Deprecated
- 더 이상 사용되지 않으며, 향후 버전에서 제거될 수 있음을 나타냅니다. 컴파일러는 이 어노테이션이 붙은 메서드를 호출할 때 경고를 표시합니다.
- @SuppressWarnings
- 특정 컴파일 경고를 무시하도록 지시합니다.
- @Retention
- 어노테이션의 유지 정책을 정의합니다. 즉, 어노테이션이 언제까지 유지될지를 결정합니다.
- 예: @Retention(RetentionPolicy.RUNTIME)는 런타임까지 어노테이션이 유지됨을 의미합니다.
- @Target
- 어노테이션이 적용될 수 있는 위치(예: 메서드, 필드, 클래스 등)를 지정합니다.
- 예: @Target(ElementType.METHOD)는 해당 어노테이션이 메서드에만 적용될 수 있음을 의미합니다.
- @Documented
- 이 어노테이션을 붙인 어노테이션은 Javadoc에 포함된다는 것을 의미합니다.
- @Inherited
- 어노테이션이 하위 클래스에 상속될 수 있도록 합니다.
커스텀 어노테이션
필요에 따라 개발자가 직접 어노테이션을 정의할 수도 있습니다.
예시)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
String value() default "default value";
}
이 어노테이션은 메서드에 적용할 수 있고, 런타임까지 유지되며, value라는 기본 속성을 가집니다.
'언어 > Java' 카테고리의 다른 글
Java 스트림 API (0) | 2025.03.17 |
---|---|
Java 컬렉션 (0) | 2025.03.17 |
Java 예외처리 (0) | 2025.03.16 |
JAVA OOP 캡슐화, 상속, 다형성 (0) | 2025.03.15 |
JAVA 클래스와 객체 (0) | 2025.03.15 |