[Java] : 애노테이션

dohyoungK·2024년 3월 4일
0

면접 스크립트

목록 보기
9/25
post-thumbnail

[Java] : 애노테이션


애노테이션(Annotation)

자바에서 애노테이션은 코드에 추가해 사용할 수 있는 메타 데이터(데이터를 설명하기 위한 데이터) 역할을 하며 @ 기호를 붙여 사용한다.

Built in Annotation

자바에서 기본적으로 제공하는 애노테이션

  1. @Override
    선언한 메서드가 오버라이드 되었다는 것을 나타낸다.

  2. @Deprecated
    앞으로 사용하지 않을 것을 권장하는 필드나 메서드에 붙인다. 만약 사용할 경우 컴파일 경고를 발생시킨다.

  3. @SuppressWarnings
    선언한 곳의 컴파일 경고가 나타나지 않게 한다.

  4. @SafeVarargs
    Java7부터 지원하며, 제네릭 같은 가변인자 매개변수를 사용할 때의 경고를 무시한다.

  5. @FunctionalInterface
    Java8부터 지원하며, 함수형 인터페이스를 지정하는 애노테이션이다.

Annotation 구현

애노테이션은 아래 구조로 구현가능 하다. 이를 메타 애노테이션이라 하고, 이를 사용해 커스텀 애노테이션을 작성할 수 있다.

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomAnnotation {
    boolean isCheck() default true;
}

Meta Annotation

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

  1. @Target
    애노테이션을 정의할 때 적용 대상을 지정한다.
  • ElementType.PACKAGE : 패키지
  • ElementType.TYPE : 타입(클래스, 인터페이스, enum)
  • ElementType.ANNOTATION_TYPE : 애노테이션
  • ElementType.CONSTRUCTOR : 생성자
  • ElementType.FIELD : 멤버 변수
  • ElementType.LOCAL_VARIABLE : 지역 변수
  • ElementType.METHOD : 메서드
  • ElementType.PARAMETER : 매개변수
  • ElementType.TYPE_PARAMETER : 타입 매개변수
  • ElementType.TYPE_USE : 타입이 사용되는 모든 곳
  1. @Rentention
    애노테이션이 유지되는 기간을 지정한다.
  • RetentionPolicy.SOURCE : 소스 파일에만 존재, 클래스 파일에는 존재하지 않는다.
  • RetentionPolicy.CLASS : 클래스 파일에 존재, 실행 시 사용 불가이며 기본값이다.
  • RetentionPolicy.RUNTIME : 클래스 파일에 존재, 실행 시 사용 가능하다.
  1. @Documented
    javadoc(자바 코드에서 API 문서를 HTML 형식으로 생성해주는 도구)으로 작성한 문서에 포함시킨다. javadoc을 통해 자동으로 html문서가 만들어진다.

  2. @Inherited
    애노테이션의 상속을 가능하게 한다.

  3. @Repeatable
    Java8부터 지원하며, 연속으로 애노테이션을 선언할 수 있게 한다.

0개의 댓글