Java注解と反射の原理説明


1つ てんせい心
注解はより大きな役割を果たすには、反射メカニズムの力を借りる必要があります。反射によって,一つの方法で宣言された注釈のすべての内容が得られます。
普通は二つの要求があります。
1 メソッド中のすべてのコメントを取得し、get Annotationsを呼び出すことで実現します。
2 操作が指定された注釈かどうかを判断し、get Annotationを呼び出すことにより実現される。
以下はソースの角度からこれらの注釈情報をどうやって取得するかを説明します。
第二のソースコードの読み取り-メソッドのすべてのコメントを取得します。

public class AccessibleObject implements AnnotatedElement {
  ...
  //    Annotation
  public Annotation[] getAnnotations() {
    return getDeclaredAnnotations();
  }  
  ...
}
public final class Method extends Executable {
  ...
  public Annotation[] getDeclaredAnnotations() {
    //  Method ,       getDeclaredAnnotations  
    return super.getDeclaredAnnotations();
  }  
  ...
}
//Method   Executable getDeclaredAnnotations           
public abstract class Executable extends AccessibleObject
  implements Member, GenericDeclaration {
  ...
  public Annotation[] getDeclaredAnnotations() {
    return AnnotationParser.toArray(declaredAnnotations());
  }  
  ...
}
第三のソースコードの読み取り-操作が指定されているかどうかを判断します。

public final class Method extends Executable {
  ...
  ////    Annotation
  public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
    return super.getAnnotation(annotationClass);
  }
  ...
}
public abstract class Executable extends AccessibleObject
  implements Member, GenericDeclaration {
  ...
  public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
    Objects.requireNonNull(annotationClass);
    //          
    return annotationClass.cast(declaredAnnotations().get(annotationClass));
  }  
  ...
}
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持ってほしいです。ありがとうございます。もっと知りたいなら、下のリンクを見てください。