Laguage

[JAVA] @애노테이션 ( Annotation )

kkkkkkkkkkkk 2021. 12. 28. 23:29

학습 내용

  • 애노테이션 정의 방법
  • 표준 애노테이션
  • 메타 애노테이션

애노테이션 정의 방법

 

interface 앞에 @를 붙여 주면 애노테이션을 정의 할 수 있습니다.

하지만 지금 생성한 애노테이션은 아무런 정보가 없는 빈 껍데기 일 뿐 입니다.

여기서 정보를 더 추가 해봅시다,

 

 

디폴트 값으로 애노테이션 안에 값을 지정을 할 수도 있고 애노테이션을 사용하고 그 값을 정의 할 수도 있습니다.

 

 

 

표준 애노테이션

@Override

-> 부모에게 상속 받은 기능들을 사용 할 때 사용하는 애노테이션입니다. 메서드 이름이 부모의 메서드 이름과 달라지면 컴파일 시 에러가 발생됩니다.

 

@Deprecated

-> 필드의 멤버나 메서드 중에 우리가 사용하지 않는 것들을 삭제하지 않고 이 애노테이션을 사용하여 더 이상 사용하지 않을 것을 권한다 라는 의미를 부여해주는 기능입니다.

사용하고 멤버나 메서드를 사용하면 컴파일 시 경고가 발생됩니다.

 

@FunctionalInterface

-> 함수형 인터페이스가 올바르게 선언이 됐는지 검사해주는 기능입니다. 잘못 된 경우 컴파일 에러가 발생됩니다.

 

@SuppressWarnings

-> 컴파일 시 발생 되는 에러를 묵인 시켜줍니다. 즉, 컴파일 에러를 감춰줍니다.

 

메타 애노테이션

@Target

-> 애노테이션을 어디에 붙일지?? 지정하는 기능입니다.

 

@Retention

-> 애노테이션이 유지되는 기간을 지정하는 기능입니다.

 

유지 정책

  • SOURCE : 소스 파일에만 존재하고 클래스 파일에는 존재하지 않는다.
  • CLASS : 클래스 파일에 존재한다.
  • RUNTIME : 클래스 파일에 존재하고 런타임 실행 할 까지 존재한다.

@Documented

-> javaoc으로 작성한 문서에 포함 되도록 하는 기능입니다.

 

@Repeatable

-> 애노테이션을 여러번 붙일 수 있게 해주는 기능입니다.

 


메타 에노테이션을 잘 기억해 둡시다.

Spring 에 자주 나오는 애노테이션 입니다. 기억 해두는 것을 추천합니다.