@ (at)
기호를 앞에 붙여서 사용한다.메소드를 오버라이드하겠다는 의미로 메소드의 선언 앞에 붙여준다. 만약 상속받은 부모 클래스 또는 구현해야할 인터페이스에서 해당 메소드가 없다면 컴파일 오류가 발생한다.
@Override
public void getInfo() {
System.out.println("test");
}
메소드를 Deprecated 시킨다. 이 메소드를 사용하는 애플리케이션을 컴파일 할 경우 컴파일 경고가 발생한다. 하위호환을 위해서 메소드 자체를 없애지는 못하지만 사용하지 말 것을 사용자에게 알리고 싶을 때 붙여준다.
@Deprecated
public void deprecatedMethod() {
System.out.println("test");
}
컴파일러 경고를 출력하지 않도록 설정한다. SuppressWarnings 어노테이션은 인자를 받는데 인자에 따른 의미는 다음과 같다.
컴파일러 경고는 경고일 뿐, 경고 상황을 개발자가 알고 있는 경우에는 컴파일 로그가 지저분해지고 진짜 잡아야하는 경고들이 잘 보이지 않을 수 있기 때문에 이 어노테이션을 쓰게 된다.
어노테이션은 위 어노테이션처럼 자바가 기본으로 제공해주는 것도 있고, 사용자가 직접 만들 수도 있다.
사용자가 직접 작성하는 어노테이션을 커스텀 어노테이션이라고 말하는데, 커스텀 어노테이션을 만들 때 사용하는 메타 어노테이션들도 있다. 메타 어노테이션에 대해서 잘 알고 있어야 정확히 원하는 커스텀 어노테이션을 만들어 사용할 수 있다.
어노테이션의 보유 기간을 명명한다.
자바 문서에도 어노테이션 정보가 포현된다.
생성할 어노테이션이 적용될 수 있는 위치를 나열한다.
자식 클래스가 어노테이션을 상속받을 수 있다.
반복적으로 어노테이션을 선언할 수 있다.
커스텀 어노테이션을 이용하는 방법
@interface [어노테이션 이름]
이라는 형태로 어노테이션을 정의한다.- 생성되는 어노테이션에 대한 메타 어노테이션을 어노테이션 정의 앞쪽에 붙여준다.
- 어노테이션을 클래스에서 사용한다. (타겟에 적용)
- 어노테이션을 이용하여 실행.
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value() default "MyAnnotation : default value"
}
class MyObject {
@MyAnnotation
public void testMethod1() {
System.out.println("This is testMethod1");
}
@MyAnnotation(value = "My new Annotation")
public void testMethod1() {
System.out.println("This is testMethod1");
}
}