Java 주석 유지 (가시 성)
3027 단어 Java Annotation
원본 볼 수 있 음 (SOURCE)
바이트 코드 보이 기 (CLASS)
실행 중 보이 기 (런 타임)
이 세 가지 가시 성 은 층 층 이 증가 하 는 것 이다. 즉, 운행 할 때 볼 수 있 는 주 해 는 앞의 두 가지 상태 에서 모두 볼 수 있다 는 것 이다.
다음은 검증 설명 하 겠 습 니 다.
세 개의 주석 원본 코드:
TestAnnoRetentionSource:
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.FIELD)
public @interface TestAnnoRetentionSource {
}
TestAnnoRetentionClass:
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.FIELD)
public @interface TestAnnoRetentionClass {
}
TestAnnoRetentionRuntime:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface TestAnnoRetentionRuntime {
}
테스트 클래스 는 다음 과 같 습 니 다:
public class AnnotationTest {
@TestAnnoRetentionSource
public int sourceVisible;
@TestAnnoRetentionClass
public int classVisible;
@TestAnnoRetentionRuntime
public int runtimeVisible;
public static void main(String[] args) {
Class<AnnotationTest> clazz = AnnotationTest.class;
for (Field each : clazz.getFields()) {
System.out.println(each.getName() + ":");
for (Annotation anno : each.getAnnotations()) {
System.out.println("\t" + anno.annotationType().getName());
}
System.out.println();
}
}
}
세 개의 주해 류 가 각각 세 개의 가시 성에 대응 하고 테스트 류 중의 세 개의 실례 변수 도 각각 대응 하 는 주해 로 수식 하 는 것 을 볼 수 있다.
테스트 클래스 입력 은:
sourceVisible:
classVisible:
runtimeVisible:
cn.teaey.test.annotation.TestAnnoRetentionRuntime
지금까지 우 리 는 Runtime 의 주 해 를 우리 코드 가 실 행 될 때 만 얻 을 수 있다 는 것 을 알 수 있다.
테스트 클래스 의 바이트 코드 (class) 파일 을 javap 명령 으로 봅 니 다.
명령: javap - verbose AnnotationTest
입력 (부분):
1. const #5 = Asciz sourceVisible;
2. const #7 = Asciz classVisible;
3. const #8 = Asciz RuntimeInvisibleAnnotations;
4. const #9 = Asciz Lcn/teaey/test/annotation/TestAnnoRetentionClass;;
5. const #10 = Asciz runtimeVisible;
6. const #11 = Asciz RuntimeVisibleAnnotations;
7. const #12 = Asciz Lcn/teaey/test/annotation/TestAnnoRetentionRuntime;;
첫 번 째 줄 에서 볼 수 있 듯 이 sourceVisible 은 class 바이트 코드 에 주석 수식 이 없습니다.
2, 3, 4 줄 에서 볼 수 있 듯 이 classVisible 변 수 는 Runtime Invisible Annotations 가 실 행 될 때 보이 지 않 는 주석 TestAnno Retention Class 에 의 해 수식 되 었 습 니 다.
5, 6, 7 줄 설명 에 따 르 면 runtime Visible 변 수 는 Runtime Visible Annotations 가 실 행 될 때 볼 수 있 는 주석 TestAnno Retention Runtime 에 의 해 수식 되 었 습 니 다.
요약:
SOURCE: JAVA 원본 (. java) 파일 에 만 존재 합 니 다.
CLASS: JAVA 소스 코드 와 바이트 코드 (class) 파일 에 존재 합 니 다.
RUNTIME: 원본 코드, 바이트 코드 에서 볼 수 있 고 코드 에서 접근 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Introduce ARE4j - a common Annotation Resolving Engine for JavaScannotation 과 Jandex 는 다른 두 개의 Annotation 도구 입 니 다.Scannotation 은 실행 할 때 Jar 와 Classpath 를 스 캔 하고 index 를 메모리 에 저장 할 수 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.