데이터 타입
- 기본 타입 (int, float, boolean 등)
- String
- Class(메타데이터) 또는 인터페이스
- enum
- 다른 애노테이션 타입
- 위의 타입들의 배열
- 일반적인 클래스를 사용할 수 없다. (ex) Member, User)
default 값
- 요소에 default 값을 지정할 수 있다.
- ex) String value() default "기본 값을 적용합니다.";
요소 이름
- 메서드 형태로 정의된다.
- 괄호()를 포함하되 매개변수는 없어야 한다.
반환 값
- void를 반환 타입으로 사용할 수 없다.
예외
- 예외를 선언할 수 없다.
package annotation.basic;
import util.MyLogger;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnoElement {
String value();
int count() default 0;
String[] tags() default {};
//MyLogger data(); // 다른 타입은 적용X
Class<? extends MyLogger> annoData() default MyLogger.class;
}
package annotation.basic;
@AnnoElement(value = "data", count = 10, tags = {"t1", "t2"})
public class ElementData1 {
}
package annotation.basic;
import java.util.Arrays;
public class ElementData1Main {
public static void main(String[] args) {
Class<ElementData1> annoClass = ElementData1.class;
AnnoElement annotation = annoClass.getAnnotation(AnnoElement.class);
String value = annotation.value();
System.out.println("value = " + value);
int count = annotation.count();
System.out.println("count = " + count);
String[] tags = annotation.tags();
System.out.println("tags = " + Arrays.toString(tags));
}
}
'개발이 좋아서 > Java가 좋아서' 카테고리의 다른 글
애노테이션 - 애노테이션과 상속 (0) | 2024.12.01 |
---|---|
애노테이션 - 메타 애노테이션 (0) | 2024.12.01 |
리플렉션 - 생성자 탐색과 객체 생성 (0) | 2024.12.01 |
리플렉션 - 활용 예제 (0) | 2024.12.01 |
리플렉션 - 필드 탐색과 값 변경 (0) | 2024.12.01 |