Annotation

0

JAVA

목록 보기
2/18
post-thumbnail

어노테이션의 경우 자바에서 없어서는 안될 기능입니다.
이번 포스팅의 경우 어노테이션에 대해 정리하고자 합니다.

Annotation이란?

  • Java5 부터 등장한 기능
  • 비즈니스 로직에는 영향을 주지 않지만 해당 타겟의 연결 방법이나 소스코드의 구조 변경 가능
  • @Override, @Deprecated가 대표적인 예시

Annotation 특징

  • 컴파일러에게 코드 문법 에러를 체크하도록 정보 제공
  • 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보 제공

Build-in Annotation

  • @Override
    메소드가 오버라이드 됐는지 검증 만약 부모 클래스 또는 구현해야 할 인터페이스에서 해당 메소드를 찾을 수 없다면 컴파일 오류 발생

  • @Deprecated
    메소드를 사용하지 말도록 유도. 사용한다면 컴파일 경고 발생

  • @SuppressWarnings
    컴파일 경고 무시

  • @SafeVarargs
    제네릭 같은 가변인자 매개변수를 사용할 때 경고 무시(자바 7 이상)

  • @FunctionalInterface
    람다 함수등을 위한 인터페이스를 지정. 메소드가 없거나 두 개 이상되면 컴파일 오류 발생 (자바 8 이상)


Meta Annotations

Meta Annotation을 통해 커스텀 어노테이션 제작 가능

@Retention

어노테이션의 생명 주기를 담당합니다.

  • class
    바이트 코드 파일까지 어노테이션 정보를 유지합니다.
    리플렉션을 이용해서 어노테이션 정보를 얻을 수 없습니다.
  • Runtime
    바이트 코드 파일까지 어노테이션 정보를 유지하면서 리플랙션을 이용해서 런타임시에 어노테이션 정보를 얻을 수 있습니다.
  • Source
    컴파일 이후로 삭제되는 형태

@Documented

문서에도 어노테이션 정보가 표시됩니다.

@Target

적용할 위치를 결정합니다.

  • PACKAGE : 패키지 선언 시
  • TYPE : 타입 선언 시
  • CONSTRUCTOR : 생성자 선언 시
  • FIELD : 멤버 변수 선언 시
  • METHOD : 메소드 선언 시
  • ANNOTATION_TYPE : 어노테이션 타입 선언 시
  • LOCAL_VARIABLE : 지역 변수 선언 시
  • PARAMETER : 매개 변수 선언 시
  • TYPE_PARAMETER : 매개 변수 타입 선언 시
  • TYPE_USE : 타입 사용 시

@Inherited

자식클래스가 어노테이션을 상속 받을 수 있습니다.

@Repeatable

반복적으로 어노테이션을 선언할 수 있게 합니다.

참고

profile
컴퓨터공학과 + 실무 = 4 + N = 모르는거 ∞ ...

0개의 댓글