<aside> 💡
어노테이션 | 설명 | 용도 |
---|---|---|
@Override | 컴파일러에게 재정의 하는 메서드라는 것을 알린다. | 메서드명,반환값이 일치하는지 판단해서 오류를 발생시킨다. |
@Deprecated | 앞으로 사용되지 않을 것을 권장하는 대상에게 붙인다. | |
@SuppressWarnings | 컴파일러의 특정 경고메세지가 나타나지 않게 해준다. | 경고를 무시해준다. |
@FunctionalInterface | 함수형 인터페이스라는 것을 알린다.(JDK1.8) | 람다식(인터페이스 - 추상메서드가 1개만 정의된 인터페이스) |
@Retention | 어노테이션의 유지 범위를 지정 | 런타임, 컴파일 등 |
@Documented | Javadoc문서에 어노테이션 정보 포함 여부 | |
@Inherited | 자식클래스에게 상속될 수 있는 어노테이션 여부 |
선언 키워드 : @interface
public @interface MyAnnotation{
}
어노테이션 속성은 메서드 형태로 정의한다
추상메서드 형태로 정의를 해야한다
public @interface MyAnnotation{
String value();
int version();
}
속성의 반환 타입은 제한적이다
속성에 기본값을 정의할 수 있다.
public @interface MyAnnotation{
String value() default "홍길동";
int version();
}
속성이름이 value일 경우 특별 규칙
@MyAnnotation(value=”xxx”)
@MyAnnotation(”xxx”) → 속성 이름이 value
어노테이션 자체에는 예외를 던질 수 없다
속성은 매개변수를 가질 수 없다
→ 클래스, 메서드, 필드, 생성자 등의 정보를 프로그램 실행 중에 동적으로 조사하거나 조작할 수 있는 기능