Annotation

민선규·2023년 3월 22일
0

JAVA

목록 보기
11/25
post-thumbnail

Annotation

이번에는 Annotation을 정리를 해보았다. Annotation은 사전적 의미로 주석을 의미한다.
하지만 일반적인 주석과 다르게 Annotation은 코드를 작성할 수 있다.

Annotation은 주석이기 때문에 런타임에 판단해서 값을 넣을 수 가 없으므로 컴파일러 수준에서 해석이 되거나, 정적이어야 한다.

그리고 Annotation은 사용자가 커스텀 할 수 있는데 방법은 이와 같다.

public @interface CustomAnnotation{
	//Code
}

Annotation에 필드를 추가할 때에는 여러가지 조건이 있다.
1. 필드의 타입은 기본형, String, enum, Annotation, Class, 배열만 가질 수 있다.
2. ()안에 매개변수를 선언할 수 없다.
3. 예외를 선언할 수 없다.

자바 표준 Annotation

@Override

메서드를 오버라이드할 때 사용한다.이 Annotation은 생략이 가능하지만 생략하지 않은 경우 부모 클래스에 해당 메소드가 없을 경우 컴파일 에러를 발생시켜 실수를 미리 캐치할 수 있다.

@Deprecated

사용하지 않는 것을 권장할 때 사용한다.

@SuppressWarnings

컴파일 경고를 제외시킬 때 사용한다.

    @SuppressWarnings({"cast", "null"})
    public void Test(){

    }
  • all : 모든 경고
  • cast : 캐스트 연산자 관련 경고
  • dep-ann : 사용하지 말아야 할 주석 관련 경고
  • deprecation : 사용하지 말아야 할 메서드 관련 경고
  • fallthrough : switch문에서 break 누락 관련 경고
  • finally : 반환하지 않는 finally 블럭 관련 경고
  • null : null 분석 관련 경고
  • rawtypes : 제너릭을 사용하는 클래스 매개 변수가 불특정일 때의 경고
  • unchecked : 검증되지 않은 연산자 관련 경고
  • unused : 사용하지 않는 코드 관련 경고

@Target

사용자가 만든 Annotation이 부착될 수 있는 타입을 지정할 때 사용한다.

    @Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE_USE, ElementType.FIELD})
    public @interface Custom{

    }
  • ANNOTATION_TYPE : 어노테이션
  • CONSTRUCTOR : 생성자
  • FIELD : 필드 선언 (emum 정수 포함)
  • LOCAL_VARIABLE : 로컬 변수
  • METHOD : 메서드
  • PARAMETER : 파라미터
  • PACKAGE : 패키지
  • TYPE : 클래스, 인터페이스 (어노테이션을 포함), enum

@Inherited

이 어노테이션을 사용한 슈퍼클래스를 상속한 서브클래스에서도 해당 어노테이션을 갖도록 할 때 사용한다.

참고 문서 및 링크

0개의 댓글

관련 채용 정보