본문 바로가기

프로그래밍/Java

[Java 요약 정리] 8. 애너테이션(Annotation)

8. 애너테이션(Annotation)

1) 특징

- Class 객체를 통해서 활용

- Annotation은 모든 애너테이션의 조상(상속 불가)

- Annotation은 인터페이스로 정의되어 있음

- 초기화 없이 사용할 시 기본값 지정 가능(null 제외)

- 요소(애너테이션 내 선언된 메소드)가 value일 경우 이름 생략 가능

- 요소 타입이 배열일 경우 {} "" 사용


2) 양식

- 생성: @interface 애너테이션명 {반환타입 요소명() default 초기값;}

- 사용: @애너테이션명(요소명=요소값) // 초기값 없을때만 지정, value-> 요소명 생략 가능

- 애너테이션 메소드는 추상메소드, 적용시 전부 지정해야 함


3) 표준(자바 제공) 애너테이션

- @Overide: 오버라이딩 메소드

- @Deprecated: 해당 필드 혹은 메소드 미사용 권장(사용시 삭선표시)

- @SuppressWarnings("경고의 종류"): 컴파일러의 경고 메시지 무시

- @SafeVarargs: 지네릭스 타입 가변인자에 사용(JDK1.7)

- @FunctionalInterface: 함수형 인터페이스 작성 체크(JDK1.8)


4) 메타 애너테이션(애너테이션을 위한 애너테이션)

- @Target({대상타입}): 애너테이션 적용가능 대상 지정

- @Retention(대상.범위): 애너테이션 유지 범위 지정(SOURCE, CLASS, RUNTIME)

- @Documented: 애너테이션 정보를 javadoc 문서에 포함시킴

- @Inherited: 애너테이션을 자손클래스에 상속

- @Repeatable*: 애너테이션 반복 적용 가능(JDK1.8)

- @Native: native 메소드에 의해 참조되는 상수에 사용(JDK1.8)