JDK에서 제공하는 표준 애너테이션은 주로 컴파일러를 위한 것으로 컴파일러에게 유용한 정보를 제공한다.
JDK에서 제공하는 애너테이션은 java.lang.annotation 패키지에 포함되어 있다.
다른 프로그램에게 어떤 정보를 제공하기 위해 애너테이션을 사용한다고 명시했다.
구체적으로 풀어내면,
| 표준 애너테이션 | 설명 |
|---|---|
| @override | 컴파일러에게 오버라이딩하는 메서드라는 것을 알린다 |
| @Deprecated | 앞으로 사용하지 않을 것을 권장하는 대상에게 사용한다 |
| @SuppressWarnings | 컴파일러의 특정 경고 메세지가 나타나지 않게 해준다 |
| @SafeVarargs | 제네릭 타입의 가변 인자에 사용한다. |
| @FuntionalInterface | 함수형 인터페이스라는 것을 알린다 |
| @Native | native메서드에서 참조되는 상수 앞에 붙인다 |
| 메타 애너테이션 | 설명 |
| @Targer | 애너테이션이 적용 가능한 대상을 지정한다 |
| @Documented | 애너테이션 정보가 javadoc으로 작성된 문서에 포함되게 한다 |
| @Inherited | 애너테이션이 하위 클래스에 상속 되도록 한다 |
| @Retention | 애너테이션이 유지되는 범위를 지정하는데 사용한다 |
| @Repeatable | 애너테이션을 반복적으로 적용되게 한다 |
직접 애너테이션을 정의해서 사용할 수 있다
애너테이션을 정의하는 방법은 인터페이스를 정의하는 법과 비슷하다.
애너테이션은 java.lang.annotation 인터페이스를 상속받기 때문에 다른 클래스나 인터페이스를 상속 받을수 없다.