1. 가장 일반적인 주석
•@Override: 이 메서드가 상위 클래스를 재정의함을 다른 사람에게 알리기 위해 메서드에 사용됩니다.
•@Deprecated: 다른 사람들은 이전 API를 사용하지 않는 것이 좋습니다. 컴파일 중에 경고 메시지가 생성되며 프로그램의 모든 요소에 설정할 수 있습니다.
•@SuppressWarnings: 일부 경고 메시지를 일시적으로 끕니다.
•@Entity: 이 클래스가 영구 클래스임을 나타냅니다.
2. 나만의 주석 디자인
대화하기 전에 먼저 코드를 읽어보세요.
1. 하나의 매개변수만으로 주석 구현
다음과 같이 코드 코드를 복사합니다 .
패키지 chb.test.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(요소 유형.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@문서화됨
공개 @interface MyAnnotation1 {
문자열 값();
}
2. 두 개의 매개변수를 사용한 주석 구현
다음과 같이 코드 코드를 복사합니다 .
패키지 chb.test.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(요소 유형.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@문서화됨
공개 @interface MyAnnotation2 {
문자열 설명();
부울 isAnnotation();
}
3. 주석 실험 수업
다음과 같이 코드 코드를 복사합니다 .
패키지 chb.test.annotation;
@MyAnnotation1("주석1입니다")
공개 클래스 AnnotationDemo {
@MyAnnotation2(description="이것은 주석2입니다",isAnnotation=true)
공개 무효 sayHello(){
System.out.println("안녕하세요!");
}
}
4.Annotation 테스트 설명 클래스
다음과 같이 코드 코드를 복사합니다 .
패키지 chb.test.annotation;
import java.lang.reflect.Method;
org.junit.Test 가져오기;
공개 클래스 TestAnnotation {
@시험
공개 무효 테스트()는 ClassNotFoundException, SecurityException, NoSuchMethodException을 발생시킵니다.
Class<?> cls = Class.forName("chb.test.annotation.AnnotationDemo");
부울 플래그 = cls.isAnnotationPresent(MyAnnotation1.class);
if(플래그){
System.out.println("주석이 될 클래스를 판단합니다.");
MyAnnotation1 annotation1 = cls.getAnnotation(MyAnnotation1.class);
System.out.println(annotation1.value());
}
메소드 method = cls.getMethod("sayHello");
플래그 = method.isAnnotationPresent(MyAnnotation2.class);
if(플래그){
System.out.println("판단 방법도 주석입니다");
MyAnnotation2 annotation2 = method.getAnnotation(MyAnnotation2.class);
System.out.println(annotation2.description()+"/t"+annotation2.isAnnotation());
}
}
}
실험 결과 콘솔은 다음 정보를 출력했습니다.
클래스가 주석인지 확인
이건 주석1이에요
판단방법도 주석이다
이것은 주석 2가 사실입니다
3. 소개 및 설명
1. MyAnnotation1의 @Target(ElementType.TYPE)
@Target의 ElementType은 Annotation 유형을 사용할 수 있는 요소를 지정하는 데 사용됩니다.
TYPE(유형), FIELD(속성), METHOD(메서드), PARAMETER(매개변수), CONSTRUCTOR(생성자), LOCAL_VARIABLE(지역 변수), PACKAGE(패키지), 여기서 TYPE(유형)은 사용할 수 있는 유형을 나타냅니다. 클래스, 인터페이스, 열거형 및 주석 유형.
2. MyAnnotation1의 @Retention(RetentionPolicy.RUNTIME)
RetentionPolicy에는 다음과 같은 세 가지 전략이 있습니다.
•SOURCE: 이 Annotation 유형 정보는 프로그램 소스 코드에만 유지됩니다. 소스 코드가 컴파일되면 Annotation 데이터는 사라지고 컴파일된 .class 파일에 유지되지 않습니다.
•CLASS: 이 주석 유형 정보는 프로그램 소스 코드와 컴파일된 .class 파일에도 유지되며 실행 중에 이 정보는 JVM에 로드되지 않습니다. 참고: 기본 전략은 CLASS 유형입니다.
•RUNTIME: 정보가 소스 코드 및 컴파일된 .class 파일에 유지되며 이 정보가 실행 중에 JVM에 로드됨을 나타냅니다.
3. @MyAnnotation1에 문서화됨
이 Annotation 정보를 JAVA API 문서에 표시하기 위한 것입니다. @Documented를 추가하지 않으면 해당 Annotation 정보가 JAVA API 문서에 표시되지 않습니다.
4. MyAnnotation1의 @인터페이스
클래스가 Annotation에 대해 정의되었음을 나타내는 키워드
5. MyAnnotation1의 문자열 값();
이름 값과 액세스 권한이 기본 수정자로 포함된 멤버 매개변수가 있음을 나타냅니다. 다음 두 가지 사항에 유의하세요.
•접근 권한은 공개 및 기본값(기본값)으로만 수정할 수 있습니다.
•매개변수 멤버는 byte, short, char, int, long, float, double, boolean의 8가지 기본 데이터 유형과 이러한 유형의 String, Enum, Class, Annotation 및 배열과 같은 데이터 유형만 사용할 수 있습니다.
AnnotationDemo의 6.@MyAnnotation1("이것은 주석1입니다")
MyAnnotation1에는 매개변수가 하나만 있으므로 괄호 안에 값을 직접 쓸 수 있습니다. 참고: 주석에 매개변수가 하나만 있는 경우 매개변수 이름을 값으로 정의하는 것이 좋습니다.
TestAnnotation의 7.cls.isAnnotationPresent(MyAnnotation1.class)
클래스가 MyAnnotation1 주석을 사용하는지 확인
8. TestAnnotation annotation1의 MyAnnotation1 = cls.getAnnotation(MyAnnotation1.class)
MyAnnotation1에 대해 이 클래스의 주석을 반환합니다.
9. TestAnnotation의 method.isAnnotationPresent(MyAnnotation2.class)
메서드가 MyAnnotation2의 주석을 사용하는지 확인