자바 주석의 원리
Java : 주석을 사용하십시오 (//www.vevb.com/article/101747.htm)
주석이란 무엇입니까?
주석은 공통 @override 및 @deprecated와 같은 메타 데이터라고도합니다. 주석은 JDK1.5 버전에 도입 된 기능입니다. 코드를 설명하는 데 사용되며 패키지, 클래스, 인터페이스, 필드, 메소드 매개 변수, 로컬 변수 등을 주석을 달 수 있습니다. 주요 함수는 다음과 같습니다.
일반 주석은 세 가지 범주로 나눌 수 있습니다.
하나의 범주는 @override, @deprecated 및 @suppresswarnings를 포함하여 Java와 함께 제공되는 표준 주석으로, 특정 메소드가 다시 작성되고 특정 클래스 또는 방법이 구식이며 경고가 무시되는 것을 나타내는 데 사용됩니다. 이러한 주석이 표시되면 컴파일러가 확인합니다.
한 가지 유형은 메타 주석입니다. 메타 주석은 @retention, @target, @inherited, @documented를 포함한 주석을 정의하는 데 사용되는 주석입니다. @retention은 주석이 유지되는 단계를 나타내는 데 사용되며, @Target은 사용 된 주석의 범위를 나타내는 데 사용되며, @Inherited는 주석이 상속 될 수 있고 @Documented가 Javadoc 문서를 생성할지 여부를 나타내는 데 사용됩니다.
한 가지 유형은 사용자 정의 주석입니다. 자신의 요구에 따라 주석을 정의하고 메타 주석을 사용하여 사용자 정의 주석에 주석을 달 수 있습니다.
주석 원리 :
Java 시스템에서 주석을 지원하는 방법을 살펴 보겠습니다. 위의 사용자 정의 주석의 예로 돌아가 봅시다. 주석 테스트의 경우 다음과 같이. AnnotationTest 클래스에 주석을 달면 주석 선언의 값은 런타임에서 AnnotationTest.class.getAntantation (test.class)을 통해 얻을 수 있습니다. 위의 문장에서 클래스 구조로부터 테스트 주석을 얻는다는 것을 알 수 있으므로, 언젠가 주석이 클래스 구조에 추가되어야합니다.
@test ( "테스트") 공개 클래스 주석 테스트 {public void test () {}}Java 소스 코드에서 클래스 바이트 코드에 이르기까지 컴파일러는 수행됩니다. 컴파일러는 Java 소스 코드를 구문 분석하고 클래스 파일을 생성합니다. 주석은 컴파일 시간에 컴파일러에 의해 처리됩니다. 컴파일러는 주석 기호를 처리하여 클래스 구조에 연결합니다. JVM 사양에 따르면 클래스 파일 구조는 엄격하게 주문한 형식입니다. 클래스 구조에 정보를 첨부하는 유일한 방법은 클래스 구조의 속성 속성에 정보를 저장하는 것입니다. 우리는 클래스, 필드 및 방법의 경우 클래스 구조에 고유 한 특정 테이블 구조가 있으며 각각 고유 한 속성이 있음을 알고 있습니다. 주석의 경우 기능의 범위도 다를 수 있습니다. 수업이나 필드 또는 방법에 사용할 수 있습니다. 현재 컴파일러는 클래스, 필드 및 메소드의 속성에 대한 주석 정보를 저장합니다.
AnnotationTest 클래스가 컴파일되면 RuntimevisibleanNotations 속성이 해당 AnnotationTest.class 파일에 포함됩니다. 이 주석이 클래스에 적용 되므로이 속성은 클래스의 속성 세트에 추가됩니다. 즉, 테스트 주석의 키-값 쌍 값 = 테스트가 기록됩니다. JVM이 AnnotationTest.class 파일의 바이트 코드를로드하면 런타임 VisiBleanNotations 속성 값이 AnnotationTest의 클래스 객체에 저장되므로 AnnotationTest.class.getAntation (test.class)을 통해 테스트 주석 개체를 얻을 수 있습니다.
여기에 질문이있을 수 있습니다. 테스트 주석 개체는 무엇입니까? 실제로, 컴파일 후 주석의 본질은 주석 인터페이스를 상속하는 인터페이스이므로 @Test는 실제로 "공개 인터페이스 테스트가 주석을 확장"합니다. AnnotationTest.class.getAnnotation (test.class)을 통해 호출하면 JDK는 동적 프록시를 통해 테스트 인터페이스를 구현하는 객체를 생성하고 runtimevisibleanNotations 속성 값을이 객체로 설정합니다. 이 개체는 테스트 주석 객체입니다. 주석 값은 값 () 메소드를 통해 얻을 수 있습니다.
Java 주석 구현 메커니즘의 전체 프로세스가 위에 나와 있습니다. 구현에는 컴파일러와 JVM의 협력이 필요합니다.
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!