@interface 애너테이션이름 {
타입 요소이름(); // 에너테이션의 요소를 선언한다.
...
}
@Override는 '애너테이션', Override는 '애너테이션의 타입'
애너테이션의 요소
: 애너테이션 내에 선언된 메서드를 '애너테이션의 요소'라고 한다. 아래 다섯 개의 요소를 갖는다.
@inerface TestInfo {
int count();
String testedBy();
String[] testTools();
TestType testType();
DateTime testDate();
}
@interface DateTime {
String yymmdd();
String hhmmss();
}
- 애너테이션의 각 요소는 기본값을 가질 수 있으며, 기본값이 있는 요소는 애너테이션을 적용할 때 값을 지정하지 않으면 기본값이 사용됨.
java.lang.annotation.Annotation
: 모든 애너테이션의 조상은 Annotation이다. 그러나 애너테이션은 상속이 허용되지 않으므로 조상을 지정할 수 없다.
@interface TestInfo extends Annotation { // 에러
int count();
String testedBy();
...
}
package java.lang.annotation;
public interface Annotation { // Annotation자신은 인터페이스이다.
boolean equals(Object obj);
int hashCode();
String toString();
Class<? extends Annotation> annotationType(); // 애너테이션의 타입을 반환
}
▶ 모든 애너테이션의 객체에 대해 equals(), hashCode(), toString()과 같은 메서드를 호출하는 것이 가능
마커 애너테이션 Marker Annotation
: 값을 지정할 필요가 없는 경우, 애너테이션의 요소를 하나도 정의하지 않을 수 있다.
: 요소가 하나도 정의되지 않은 애너테이션을 마커 애너테이션이라고 한다.
애너테이션 요소의 규칙
- 요소의 타입은 기본형, String, enum, 애너테이션, Class만 허용됨
- ()안에 매개변수를 선언할 수 없다.
- 예외를 선언할 수 없다.
- 요소를 타입 매개변수로 정의할 수 없다.
'Language > java' 카테고리의 다른 글
[Java] 쓰레드_쓰레드의 구현과 실행 (0) | 2022.08.02 |
---|---|
[Java] 쓰레드_프로세스와 쓰레드 (0) | 2022.08.02 |
[Java] 애너테이션_메타 애너테이션 (0) | 2022.08.02 |
[Java] 애너테이션 (0) | 2022.08.02 |
[Java] 열거형_열거형의 이해 (0) | 2022.07.30 |
댓글