이번에는 Annotation을 정리를 해보았다. Annotation은 사전적 의미로 주석을 의미한다.
하지만 일반적인 주석과 다르게 Annotation은 코드를 작성할 수 있다.
Annotation은 주석이기 때문에 런타임에 판단해서 값을 넣을 수 가 없으므로 컴파일러 수준에서 해석이 되거나, 정적이어야 한다.
그리고 Annotation은 사용자가 커스텀 할 수 있는데 방법은 이와 같다.
public @interface CustomAnnotation{
//Code
}
Annotation에 필드를 추가할 때에는 여러가지 조건이 있다.
1. 필드의 타입은 기본형, String, enum, Annotation, Class, 배열만 가질 수 있다.
2. ()안에 매개변수를 선언할 수 없다.
3. 예외를 선언할 수 없다.
메서드를 오버라이드할 때 사용한다.이 Annotation은 생략이 가능하지만 생략하지 않은 경우 부모 클래스에 해당 메소드가 없을 경우 컴파일 에러를 발생시켜 실수를 미리 캐치할 수 있다.
사용하지 않는 것을 권장할 때 사용한다.
컴파일 경고를 제외시킬 때 사용한다.
@SuppressWarnings({"cast", "null"})
public void Test(){
}
사용자가 만든 Annotation이 부착될 수 있는 타입을 지정할 때 사용한다.
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE_USE, ElementType.FIELD})
public @interface Custom{
}
이 어노테이션을 사용한 슈퍼클래스를 상속한 서브클래스에서도 해당 어노테이션을 갖도록 할 때 사용한다.
참고 문서 및 링크