Java 메모 및 메모 원리 상세 설명

2802 단어 Java주해
Java 메모의 원리
java:주해 사용,https://www.jb51.net/article/101747.htm
메모
메모는 메타데이터라고도 합니다. 예를 들어 우리가 흔히 볼 수 있는 @Override와 @Deprecated입니다. 메모는 JDK1.5 버전에서 도입된 특성으로 코드에 대한 설명에 사용되며 패키지, 클래스, 인터페이스, 필드, 방법 매개 변수, 국부 변수 등을 메모할 수 있습니다.주요 기능은 다음과 같습니다.
  • 문서를 생성하고 코드에 표시된 메타데이터를 통해javadoc 문서를 생성합니다
  • 컴파일 검사는 코드에 표시된 메타데이터를 통해 컴파일러가 컴파일하는 동안 검사 검증을 하게 한다
  • 컴파일할 때 동적 처리, 컴파일할 때 코드에 표시된 메타데이터를 통해 동적 처리, 예를 들어 동적 생성 코드..
  • 운행할 때 동적 처리, 운행할 때 코드에 표시된 메타데이터를 통해 동적 처리, 예를 들어 반사 주입 실례를 사용한다
  • 일반 메모는 다음과 같은 세 가지 유형으로 나눌 수 있습니다.
    클래스는 @Override, @Deprecated, @SuppressWarnings를 포함하여 Java가 자체적으로 가지고 있는 표준 메모입니다. 각각 어떤 방법을 다시 쓰거나 어떤 클래스나 방법이 유행이 지났거나 무시할 경고를 표시하는 데 사용됩니다. 이 메모로 표시하면 컴파일러가 검사합니다.
    메타 메모 클래스입니다. 메타 메모는 @Retention, @Target, @Inherited, @Documented, @Retention은 메모가 보존된 단계를 표시하고, @Target은 메모의 사용 범위를 표시하며, @Inherited는 메모를 계승할 수 있음을 표시하고, @Documented는javadoc 문서를 생성할 수 있는지 표시하는 데 사용됩니다.
    클래스는 사용자 정의 주석으로 자신의 수요에 따라 주석을 정의할 수 있으며, 원 주석으로 사용자 정의 주석을 주석할 수 있다.
    메모 원리:
    Java의 큰 체계 아래에서 주석을 어떻게 지원하는지 봅시다.또는 위의 사용자 정의 메모의 예로 돌아가서 메모 테스트에 대해 다음과 같이 AnnotationTest 클래스를 메모하면 AnnotationTest를 통해 실행할 수 있습니다.class.getannotation (Test.class) 은 주해 성명의 값을 가져옵니다. 위의 문장에서 알 수 있듯이 이것은 class 구조에서 Test 주해를 추출한 것이기 때문에 어느 때class 구조에 주해가 추가되었을 것입니다.
    
    @Test("test") 
    public class AnnotationTest { 
    public void test(){ 
    } 
    }
    
    
    자바 원본에서class 바이트까지는 컴파일러가 완성한 것입니다. 컴파일러는 자바 원본을 해석하고class 파일을 생성합니다. 주석도 컴파일할 때 컴파일러가 처리합니다. 컴파일러는 주석 기호를 처리하고class 구조에 추가합니다. jvm규범에 따라class 파일 구조는 엄격하고 질서정연한 형식입니다. 유일하게 정보를 class 구조에 추가할 수 있는 방식은class 구조의attributes 속성에 저장하는 것입니다.우리는 클래스, 필드, 방법에 대해class 구조에 모두 자신의 특정한 표 구조가 있고 각자의 속성이 있다는 것을 알고 있다. 주해에 대한 작용의 범위도 다르고 클래스에 작용할 수도 있고 필드나 방법에 작용할 수도 있다. 이때 컴파일러는 주해 정보를 클래스, 필드, 방법 자신의 속성에 저장해야 한다.
    우리의 Annotation Test 클래스가 컴파일된 후에 대응하는 Annotation Test.클래스 파일에는 RuntimeVisible Annotations 속성이 포함되어 있습니다. 이 주석은 클래스에 작용하기 때문에 클래스의 속성 집합에 추가됩니다.즉, 테스트 메모의 키 값이 value=test에 기록됩니다.JVM이 AnnotationTest를 로드하는 경우class 파일 바이트 코드는 RuntimeVisible Annotations 속성 값을 AnnotationTest의 클래스 대상에 저장하기 때문에 AnnotationTest를 통해 사용할 수 있습니다.class.getAnnotation (Test.class) 은 Test 콜아웃 객체로 가져온 다음 Test 콜아웃 객체를 통해 Test 내의 속성 값을 가져옵니다.
    Test 메모 객체는 무엇입니까?사실 주석이 번역된 후의 본질은 Annotation 인터페이스를 계승하는 인터페이스이기 때문에 @Test는 사실'public interface Test extends Annotation'이다. 우리가 Annotation Test를 통과할 때.class.GetAnnotation (Test.class) 을 호출할 때, JDK는 동적 에이전트를 통해 Test 인터페이스를 실현하는 대상을 생성하고, RuntimeVisible Annotations 속성 값을 이 대상에 설정합니다. 이 대상은 Test 주석 대상이며,value () 방법으로 주석 값을 얻을 수 있습니다.
    Java 메모 구현 메커니즘의 전체 과정은 위에서 보듯이 그 실현은 컴파일러와 JVM이 함께 협력해야 한다.
    읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

    좋은 웹페이지 즐겨찾기