[JAVA] Annotation(애노테이션)이란?

sy·2023년 3월 18일
0

JAVA

목록 보기
3/8

Annotation 이란?

사전적 의미로는 주석이라고 한다.
Java Annotation은 자바 소스 코드에 추가하여 사용할 수 있는 메타 데이터의 일종이다. 메타 데이터란 애플리케이션이 처리해야할 데이터가 아니라 컴파일 과정과 실행 과정에서 코드를 어떻게 처리해야하는지 알려 주기 위한 추가 정보이다.
보통 @ 기호를 앞에 붙여서 사용한다.

Annotation 종류

1. Built-in Annotation (표준 애노테이션)

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

@Override

컴파일러에게 오버라이딩하는 메서드라는 것을 알린다. 생략 가능하다. 상속 받은 부모 클래스 또는 구현해야할 인터페이스에서 해당 메서드가 없다면 컴파일 오류가 발생한다. 이러한 실수를 방지할 수 있다.

class Parent{
	void parentMethod(){}
}

class Child extends Parent{
	@Override
    void parentmethod(){} // 컴파일 에러 (오타)
}
    

@Deprecated

앞으로 사용하지 않을 것을 권장하는 필드나 메서드에 붙인다. 하위 호환을 위해 메서드를 삭제하지 않고 컴파일 경고를 출력한다.

@SupperessWarnings

컴파일러의 경고 메시지가 나타나지 않게 한다.

@SafeVarargs

제네릭 같은 가변인자 매개변수를 사용할 때 경고를 무시한다.

@FunctionalInterface

컴파일러에게 함수형 인터페이스라는 것을 알린다.

2. Meta Annotation (메타 애노테이션)

애노테이션을 위한 애노테이션이다.
애노테이션을 만들 때 사용하는 애노테이션이다.

@Target

애노테이션을 정의할 때 적용 대상을 지정하는데 사용한다.

// 여러개 지정
@Target( {TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE} )
or 

// 한 개만 지정
@Target(ElementType.ANNOTATION_TYPE)
  • ANNOTATION_TYPE : 애노테이션
  • CONSTRUCTOR : 생성자
  • FIELD : 필드 (멤버 변수, enum 상수)
  • LOCAL_VARIABLE : 지역 변수
  • METHOD : 메서드
  • PACKAGE : 패키지
  • PARAMETER : 매개 변수
  • TYPE : 타입 (클래스, 인터페이스, enum)
  • TYPE_PARAMETER : 타입 매개 변수
  • TYPE_USE : 타입이 사용되는 모든 곳

@Retention

애노테이션이 유지되는 기간을 지정하는데 사용한다.

// 소스 파일에만 존재, 컴파일 시에만 사용, 클래스 파일에는 없음
@Retention(RetentionPolicy.SOURCE)

// 클래스 파일에 존재, 실행 시 사용 불가, 기본 값
@Retention(RetentionPolicy.CLASS)

// 클래스 파일에 존재, 실행시 사용 가능
@Retention(RetentionPolicy.RUNTIME)

@Documented

javadoc으로 작성한 문서에 포함시킨다. javadoc을 통해 자동으로 html 문서가 만들어진다.
JavaDoc: 자바 코드에서 API 문서를 HTML 형식으로 생성해주는 도구

@Inherited

애노테이션을 자손 클래스에 상속할 때 사용한다.

@Repeatable

반복해서 붙일 수 있는 애노테이션을 정의할 때 사용한다.

Annotation 만들기

annotation을 직접 만들어 사용할 수 있다.

@interface 어노테이션이름{
   타입 요소이름();
}

0개의 댓글