Home [Java-Effective] Annotation
Post
Cancel

[Java-Effective] Annotation

Annotaion

애너테이션 (Annotation)

  • 다른 프로그램에게 유용한 정보를 제공하는 역할
  • 다른 프로그램들에게는 아무 영향을 주지 않는다애너테이션 주요 역할
  • 컴파일러에게 문법에러를 체크하도록 정보 제공
  • 프로그램 빌드 시 코드를 자동으로 생성할 수 있도록 정보 제공
  • 런타임 시 특정 기능을 실행하도록 정보 제공표준 애너테이션 : 자바에서 기본적으로 제공하는 애너테이션
표준 애너테이션설명
@Override컴파일러에게 메서드를 오버라이딩한다고 알림
@Deprecated이제 사용하지 않을 대상을 알림
@FunctionalInterface함수형 인터페이스라고 알림
@SuppressWarning경고메세지 생략

@Override

  • 메서드 앞에만 붙일 수 있는 애너테이션
  • 상위 클래스의 메서드를 오버라이딩하는 메서드임을 알리는 역할
  • 오타 발생시 에러 방지@Deprecated
  • 더 이상 사용하지 않는 필드, 메서드가 있는 경우 새로운 것으로 대체되었으니 기존의 것을 사용하지 않음을 알림

@SuppressWarnings

  • 컴파일 경고 메세지가 나타나지 않도록 해줌
  • 경고가 발생할걸 알면서도 묵인해야하는 경우 사용
애너테이션설명
@SuppressWarnings(“all”)모든 경고 억제
@SuppressWarnings(“deprecation”)Deprecated 메서드 사용 시 나오는 경고 억제
@SuppressWarnings(“fallthrough”)switch문에서 break 구문이 없을때 경고 억제
@SuppressWarnings(“finally”)finally 관련 경고 억제
@SuppressWarnings(“null”)null 관련 경고 억제
@SuppressWarnings(“unchecked”)검증되지않은 연산자 관련 경고 억제
@SuppressWarnings(“unused”)사용하지않는 코드 관련 경고 억제

@FunctionalInterface

  • 함수형 인터페이스 선언 시, 함수형 인터페이스가 바르게 선언되었는지 확인
  • 코드 작성 과정 중 실수 방지 위한 확인용 애너테이션메타 애너테이션(meta-annotation)
  • 애너테이션을 위한 애너테이션
  • 애너테이션 적용대상, 유지기간 등을 정하는데 사용
메타 애너테이션설명
@Target애너테이션을 적용할 타겟 지정
@Documented애너테이션 정보를 javadoc로 작성된 문서에 포함
@Inherited애너테이션이 하위클래스에 상속되도록
@Retention애너테이션이 유지기간을 정하는데 사용
@Repeatable애너테이션을 반복 적용 가능하게 함

메타 애너테이션

@Target

  • 애너테이션을 적용할 적용 대상 지정 시 사용@Documented
  • 애너테이션에 대한 정보가 javadoc으로 작성한 문서에 포함되도록 하는 애너테이션 설정@Inherited
  • 하위클래스가 애너테이션을 상속받도록 함@Rentention
  • 애너테이션의 지속시간 결정
유지 정책설명
SOURCE소스파일에 존재, 클래스파일에는 존재X
CLASS클래스파일에 존재, 실행 시 사용불가, 기본값
RUNTIME클래스 파일에 존재, 실행 시 사용 가능

@Repeatable

1
2
3
@interface 애너테이션명 { 
    타입_요소명(); // 애너테이션 요소 선언 
}
  • 애너테이션을 여러번 붙일 수 있도록 허용

사용자 정의 애너테이션

  • 사용자가 직접 애너테이션을 정의하여 사용하는 것
  • 인터페이스를 정의하는 방법과 비슷
  • 애너테이션은 java.lang.annotation을 상속받기 때문에 다른 클래스나 인터페이스를 상속받을 수 없음
This post is licensed under CC BY 4.0 by the author.