본문 바로가기
Language/java

[Java] 애너테이션_메타 애너테이션

by gamxong 2022. 8. 2.

메타 애너테이션

: 애너테이션을 위한 애너테이션

: 애너테이션의 적용대상이나 유지기간등을 지정하는데 사용

 

@Target

 

: 애너테이션이 적용가능한 대상을 지정하는데 사용

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
	String[] value();
}

* 적용대상의 종류는 p.711 표 참고

 

@Retention

 

: 애너테이션이 유지되는 기감을 지정하는데 사용

유지 정책 의미
SOURCE 소스 파일에만 존재. 클래스파일에는 존재하지 않음
CLASS 클래스 파일에 존재. 실행시에 사용불가. 기본값
RUNTIME 클래스 파일에 존재. 실행시에 사용가능

 

예시)

@Target(ElementType.METHOD)
@Retention(RententionPolicy.SOURCE)
public @interface Override {}

 

 

@Documented

 

: 애너테이션에 대한 정보가 javadoc으로 작성한 문서에 포함되도록 한다.

: @override, @SuppressWarnings 를 제외하고는 모두 이 메타 애너테이션이 붙어 있음

 

 

@Inherited

 

: 이 애너테이션을 조상클래스에 붙이면, 자손 클래스도 이 애너테이션이 붙은 것과 같이 인식

 

 

 

@Repeatable

 

: 이 애너테이션은 여러 번 붙일 수 있다.

@ToDo("delete test codes.")
@ToDo("override inherited methods")
class Myclass {
	...
}

 

 

@Native

 

: 네이티브 메서드에 의해 참조되는 '상수 필드'에 붙이는 애너테이션

: 네이티브 메서드란? JVM이 설치된 OS의 메서드, 선언부만 정의하고 구현은 하지 않음.

 

 

 

 

 

 

 

 

 

댓글