Annotation
- 컴파일러에게 제공하는 특별한 정보
- 컴파일이나 배포하는 동안 사용할 특별한 정보
- 실행하는 동안 사용할 특별한 정보
- 문법
@annotation이름(속성=값, 속성=값, ...)
- 만약 속성 이름이 다음과 같이 'value'일 경우 생략가능
@annotation(value="okok")
==> @annotation이름("okok")
- 그런, 속성이 2개 이상일 경우는 value 이름을 생략할 수 없다.
@annotation이름("okok", age="20") // error!
==> @annotation이름(value="okok", age="20") // ok!
@애노테이션 정의
- 애노테이션 유지 정책: @Retention(...)
.CLASS (.class 파일에 존재, 컴파일러에게 제공할 정보)
.RUNTIME (.class 파일에 존재. JVM에게 제공할 정보)
.SOURCE (.class 파일에 없다. 컴파일할 때 버려짐)