Annotation 이란? 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포합시킨것이 바로 Annoation이다.
코드를 작성하다보면 @Override 같이 @가 붙은 것을 많이 봤을 것이다. @Override가 컴파일에게 오버라이딩이라는 것을 알려주는 Annotation 대표적인 예이다.
| Annotation | 설명 |
|---|---|
| @Override | 컴파일러에게 Override하는 메서드인 것을 알려줄때 사용한다. |
| @Deprecated | 앞으로 사용하지 않을 것을 권장하는 대상에 붙인다. |
| @FunctionalInterface | 함수형 interface라는 것을 알린다. |
| @SuppressWarnings | 컴파일러의 특정 경고메시지가 나타나지 않게 해준다. |
| @SafeVarargs | 지네릭 타입 가변인자에 사용한다. |
| @Native | native 메서드에서 참조되는 상수 앞에 붙인다. |
| Annotation | 설명 |
|---|---|
| @Target | Annotation이 적용 가능한 대상을 지정하는데 사용한다. |
| @Documented | Annotation이 정보를 javadoc으로 작성된 문서에 포합시킬때 사용한다. |
| @Retention | Annotation이 유지되는 범위를 지정하는데 사용한다. |

interface앞에 @를 붙혀서 만들어준다. 여기서 사용되는 @Documented @Retention @Target은 meta Annotation이라고 부른다
여기서 Enum 형태인 ElementType을 멤버로 가진다. 멤버로 가질 수 있는 타입은 int나 double과 같은 원시 타입이나 String, Class 타입, 배열 타입, Enum 을 사용할 수 있다.