Annotation?
Annotation은 메타데이터의 형태로, 프로그램에 대한 정보를 제공하지만, 코드가 동작하는 데에 직접적인 영향은 미치지 않는다.
Annotation은 언제 사용될까?
- 컴파일 시 : 컴파일러가 error를 검출하거나, warning을 숨길때 사용된다.
- 컴파일, 디플로이 시 : 소프트웨어 툴들은 어노테이션 정보를 사용해서 코드, XML파일 등을 생성할 수 있다.
- 런타임 시 : 일부 어노테이션들은 런타임시 검사될 수 있다.
Annotation의 형태
@Entity
'@'은 컴파일러가 이 기호 뒤에 오는 것이 어노테이션이라는 것을 알게 해준다.
@Book(
name = "Frozen Little Golden Book",
anthor = "Victoria Saxon"
)
class TestClass() {...}
어노테이션은 element를 가질수 있다.
@SuppressWarnings(value = "unchecked")
void myMethod() { ... }
이름이 없는 element를 가질 수도 있다.
@SuppressWarnings("unchecked")
void myMethod() { ... }
단 하나의 value라는 이름을 가진 element를 가지고 있다면 element의 이름이 생략될 수도 있다.
@Author(name = "Jane Doe")
@EBook
class MyClass { ... }
여러개의 어노테이션이 같이 사용 될 수도 있다.(Java SE 8부터 지원)
@Author(name = "Jane Doe")
@Author(name = "John Smith")
class MyClass { ... }
같은 타입의 어노테이션이 동시에 사용 될 수도 있다.(Java SE 8부터 지원)
Annotation Type
① Predefined Annotation Type
▲java.lang에서 정의한 Type ▲ java.lang.annotation에서 정의한 Type
Java에서 정의해 놓은 Annotation Type이다. 이 타입들은 java.lang 또는 java.lang.annotation에 정의되어 있다.
(http://docs.oracle.com/javase/8/docs/api/ 참조)
② CustomAnnotation Type
Annotaion은 우리가 새로 정의해서 사용할 수도 있는데, 이를 Custom Annotation Type이라고 한다.