Annotation

지인호·2022년 1월 7일
0

TIL

목록 보기
11/28
post-thumbnail

자바에서 메타데이터를 기록하는 보편적인 방법

데이터의 유효성 검사와 메타데이터 명세를 위해 자바에서 지원하는 문법이다. @어노테이션 이름 으로 쓸 수 있다

@Override@Deprecated 등이 어노테이션에 속한다

🍕메타데이터란?
데이터를 위한 데이터, index, type 처럼 다른 데이터를 구조화하여 설명해주는 데이터이다. 대량의 데이터에서 찾고있는 정보를 효율적으로 찾아내기 위해 사용된다.
태그 같은 개념이라 생각하면 편하다.

자바에서 제공하는 Annotation

@Override

  • 선언한 메서드가 오버라이드(재정의)되었다는것을 의미한다.
  • 만약, 상위클래스 또는 인터페이스에서 해당 메서드를 찾을 수 없을 경우 CompileError 를 발생시킨다

@Deprecated

  • 해당 메서드가 지원중단되었음을 표기한다.
  • 만약 사용할 경우, CompileWarning 을 발생시킨다

@SupressWarnings

  • 선언한 부분의 CompileWarning 을 무시한다

@FunctionalInterface

  • 해당 인터페이스가 함수형 인터페이스임을 명시한다.
  • 만약 함수형 인터페이스의 조건에 맞지 않을경우, CompileError 를 발생시킨다.

Annotation 사용법

@AnnotationName(value=data)

AnnotationName : 해당 어노테이션의 이름

value : 해당 어노테이션 내에 존재하는 프로퍼티의 이름(key)

data : 프로퍼티에 대입할 값(value)

프로퍼티가 없으면 Marker Annotation,
프로퍼티가 하나이면 SingleValueAnnotation,
프로퍼티가 여러개이면 MultiValueAnnotation 이라고 한다

Custom Annotation 작성법

어노테이션은 @interface 키워드로 작성할 수 있다

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

위에 사용된 @Target@Retention메타 어노테이션 이라고 한다.

Meta Annotation

어노테이션을 선언할때 사용하는 어노테이션

메타메타데이타

@Target

어노테이션을 붙일 수 있는 위치(메서드, 필드, 타입 등)

타입은 클래스, 인터페이스, 열거형 등의 자료형을 의미한다

Retention

어노테이션이 어느시점까지 유효할지를 지정한다

컴파일 이전, 런타임 이전, 런타임 이후 로 나뉜다.

@Inherited

해당 어노테이션을 붙인 클래스의 자식클래스에도 어노테이션이 상속되도록 한다.

예를들어, A클래스의 한 메서드에 어노테이션을 붙였다면, A를 상속한 B 클래스의 해당 메서드에도 어노테이션이 적용된다.

@Repeatable

같은 위치에 해당 어노테이션을 여러번 붙일 수 있게 한다.

profile
테오의 스프린트 17기 퍼실리테이터

0개의 댓글