어노테이션
JAVA 5에서 추가된 어노테이션은 자바 컴파일러에게 메세지를 전달하는 목적의 메모이다.
컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공하고, 빌드나 배치 시 코드를 자동 생성할 수 있도록 정보를 제공하며, 실행 시 기능을 실행하도록 정보를 제공한다.
표준 어노테이션
자바에서 제공하는 몇 가지 어노테이션 중 대표적인 3가지만 확인하자.
@Override
상위 클래스의 메서드 오버라이딩 또는 인터페이스에 선언된 추상 메서드의 구현임을 나타낸다. 잘못된 메서드 오버라이딩 시 컴파일 오류가 발생한다.
@Deprecated
문제의 발생 소지가 있거나 개선된 기능의 다른 것으로 대체되어 더 이상 필요 없게 되었음을 표시한다. @Deprecated 를 사용한 메서드 호출 시 컴파일 오류가 발생한다.
@SuppressWarnings
컴파일 경고 메시지를 전달하지 말라고 요청할 때 사용한다. 예를 들어, Deprecated 된 메서드의 사용에 대한 경고를 무시할 때 @SuppressWarnings("deprecation") 선언을 추가하면 된다. main 메서드에 대해서도 적용이 가능하며 다양한 경고를 무시할 수 있다.
메타 어노테이션
어노테이션을 위한 어노테이션이다.
@Retention
자바 컴파일러가 어노테이션을 다루는 방법을 기술하며, 특정 시점까지 영향을 미치는지 결정한다.
- RetentionPolicy.SOURCE : 컴파일 전까지만 유효(컴파일 이후에는 사라짐)
- RetentionPolicy.CLASS : 컴파일러가 클래스를 참조할 때까지 유효
- RetentionPolicy.RUNTIME : 컴파일 이후에도 JVM에 의해 계속 참조
@Doucmented
해당 어노테이션을 Javadoc에 포함시킨다.
@Target
어노테이션이 적용할 위치를 선택한다.
- ElementType.PACKAGE : 패키지 선언
- ElementType.TYPE : 타입 선언
- ElementType.ANNOTATION_TYPE : 어노테이션 타입 선언
- ElementType.CONSTRUCTOR : 생성자 선언
- ElementType.FIELD : 멤버 변수 선언
- ElementType.LOCAL_VARIABLE : 지역 변수 선언
- ElementType.METHOD : 메서드 선언
- ElementType.PARAMETER : 전달인자 선언
- ElementType.TYPE_PARAMETER : 전달인자 타입 선언
- ElementType.TYPE_USE : 타입 선언
@Inherited
어노테이션의 상속을 가능하게 한다.
@Repeatable
Java 8부터 지원하며, 연속적으로 어노테이션을 선언할 수 있게 해준다.
커스텀 어노테이션
커스텀 어노테이션은 사용자가 임의로 만든 어노테이션이다.
어노테이션을 정의하고, 타겟에 적용 후, 어노테이션을 이용하는 코드를 수행하는 순서로 사용한다.
참조
윤성우의 열혈 JAVA 프로그래밍
https://bangu4.tistory.com/199
'JAVA > Java' 카테고리의 다른 글
[Java] 기본 함수형 인터페이스(Functional Interface) (0) | 2022.09.13 |
---|---|
[Java] 익명 클래스(Anonymous Class)와 람다식(Lambda Expression) (0) | 2022.09.13 |
[JAVA] 매개변수의 가변 인자(Variable Argument) 선언 (0) | 2022.09.12 |
[Java] 열거형(Enumeration Type) (0) | 2022.09.12 |
[Java] 컬렉션 프레임워크 - 컬렉션 기반 알고리즘 (0) | 2022.09.12 |
댓글