Annotation
주석은 데코레이션, 클래스, 인터페이스, 필드에 적용되어 툴과 라이브러리를 활용할 수 있게 함으로써, 코드에 명시적 프로그래밍을 줄이고 좀 더 많은 선언문을 제공한다.
- 주석은 프로그램의 의미적인 부분에 직접 영향을 주지 않고, 툴이 프로그램을 어떻게 다루어야 하는지에 영향을 준다. 툴이 실행 중인 프로그램의 의미적인 부분에 영향을 줄 수 있다.
- 주식은 런타임에 소스 파일 또는 클래스 파일 등에서 읽을 수 있다.
- 주석은 javadoc 태그의 기능을 보안하고 있다. 마크업을 문서 생성시 필요한 정보를 제공하기 위해 사용하고자 할 경우, javadoc 태크 또는 주석을 사용해야 한다.
- 일반적으로 어플리케이션 프로그래머는 주석 타입을 정의하는 경우가 거의 없지만, 주석 타입을 정의하는 작업이 어렵지는 않습니다.
주석 보류 정책
주석을 어떤 시점에 무시하고 처리하지 않을 지를 결정한다.
@Retention을 이용하여 지정할수 있다.
- SOURCE : 주석은 소스파일에서만 사용이 가능하다. 즉, 컴파일 시점에는 주석을 무시하고 처리하지 않는다.
- CLASS : 주석은 컴파일을 하는 동안. class 파일에 저장된다. 하지만 실행되는 동안 JVM이 사용할 수 없다.
- RUNTIME : 주석은 컴파일 되는 동안, class 파일에 저장되고 실행 중 JVM에 의해 사용 가능하다.
1. import java.lang.annotation.*; 2. 3. @Retention (RetentionPolicy.RUNTIME) 4. @interface ExamAnnotation { 5. String str(); 6. int val(); 7. } |
Built-in Annotation
@Documented
"이 주석은 문서화되어져야 한다"는 것을 명시
다른 주석 선언을 주석하기 위해서만 사용
@Inherited
다른 주석 선언에서만 사용이 가능한 마커 주석
클래스 선언에 사용된 주석에만 영향을 준다.
수퍼 클래스에서 사용된 주석이 서브 클래스로 상속되도록 한다.
@Retention
주석을 어떤 시점에 무시하고 처리하지 않을지를 결정하고자 할 때 사용.
다른 주석의 주석으로만 사용
@Target
주석이 어떤 타입의선언에 적용할 수 있도록 할 것인지를 지정하기 위해 사용된다.
다른 주석의 주석으로만 사용
@Deprecated
"이 주석이 사용된 선언은 이제 더 이상 사용이 안되고 더 새로운 형태로 대체되었다."라는 것을 나타낸다.
@Override
메서드에서만 사용가능한 주석
반드시 오버라이딩 되어야 한다는 걸 의미
@SuppressWarnings
컴파일러에 의해 발생하는 하나 이상의 경고를 감추고자 할 때 사용
댓글
댓글 쓰기