본문 바로가기
JAVA/Java

[Java] 어노테이션(Annotation)

by 민트맛녹차 2022. 9. 13.

어노테이션

JAVA 5에서 추가된 어노테이션은 자바 컴파일러에게 메세지를 전달하는 목적의 메모이다.

컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공하고, 빌드나 배치 시 코드를 자동 생성할 수 있도록 정보를 제공하며, 실행 시 기능을 실행하도록 정보를 제공한다.

 

표준 어노테이션

자바에서 제공하는 몇 가지 어노테이션 중 대표적인 3가지만 확인하자.

@Override

상위 클래스의 메서드 오버라이딩 또는 인터페이스에 선언된 추상 메서드의 구현임을 나타낸다. 잘못된 메서드 오버라이딩 시 컴파일 오류가 발생한다.

@Deprecated

문제의 발생 소지가 있거나 개선된 기능의 다른 것으로 대체되어 더 이상 필요 없게 되었음을 표시한다. @Deprecated 를 사용한 메서드 호출 시 컴파일 오류가 발생한다.

@SuppressWarnings

컴파일 경고 메시지를 전달하지 말라고 요청할 때 사용한다. 예를 들어, Deprecated 된 메서드의 사용에 대한 경고를 무시할 때 @SuppressWarnings("deprecation") 선언을 추가하면 된다. main 메서드에 대해서도 적용이 가능하며 다양한 경고를 무시할 수 있다.

 

메타 어노테이션

어노테이션을 위한 어노테이션이다.

@Retention

자바 컴파일러가 어노테이션을 다루는 방법을 기술하며, 특정 시점까지 영향을 미치는지 결정한다.

  • RetentionPolicy.SOURCE : 컴파일 전까지만 유효(컴파일 이후에는 사라짐)
  • RetentionPolicy.CLASS : 컴파일러가 클래스를 참조할 때까지 유효
  • RetentionPolicy.RUNTIME : 컴파일 이후에도 JVM에 의해 계속 참조

@Doucmented

해당 어노테이션을 Javadoc에 포함시킨다.

@Target

어노테이션이 적용할 위치를 선택한다.

  • ElementType.PACKAGE : 패키지 선언
  • ElementType.TYPE : 타입 선언
  • ElementType.ANNOTATION_TYPE : 어노테이션 타입 선언
  • ElementType.CONSTRUCTOR : 생성자 선언
  • ElementType.FIELD : 멤버 변수 선언
  • ElementType.LOCAL_VARIABLE : 지역 변수 선언
  • ElementType.METHOD : 메서드 선언
  • ElementType.PARAMETER : 전달인자 선언
  • ElementType.TYPE_PARAMETER : 전달인자 타입 선언
  • ElementType.TYPE_USE : 타입 선언

@Inherited

어노테이션의 상속을 가능하게 한다.

@Repeatable

Java 8부터 지원하며, 연속적으로 어노테이션을 선언할 수 있게 해준다.

 

커스텀 어노테이션

커스텀 어노테이션은 사용자가 임의로 만든 어노테이션이다.

어노테이션을 정의하고, 타겟에 적용 후, 어노테이션을 이용하는 코드를 수행하는 순서로 사용한다.

 

 

 

 

참조
윤성우의 열혈 JAVA  프로그래밍
https://bangu4.tistory.com/199

댓글