国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

Java注解與反射原理說明

2024-07-14 08:43:32
字體:
來源:轉載
供稿:網友

一 點睛

注解若想發揮更大作用,還需借助反射機制之力。通過反射,可以取得一個方法上聲明的注解的全部內容。

一般有兩種需求:

1 取得方法中全部的注解,通過調用getAnnotations來實現。

2 判斷操作是否是指定注解,通過調用getAnnotation來實現。

下面從源碼角度來說明怎樣獲取這些注解信息。

二 源碼導讀——取得方法中全部的注解

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));  }    ...}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泉州市| 大方县| 灵川县| 湘潭市| 麻江县| 连江县| 安福县| 湾仔区| 沈丘县| 白河县| 盐城市| 丰原市| 永年县| 舟山市| 洪洞县| 勃利县| 河津市| 开原市| 朔州市| 吉首市| 敦化市| 陵川县| 五指山市| 顺昌县| 德化县| 奉节县| 东海县| 江永县| 洪江市| 淳化县| 资兴市| 漳州市| 三河市| 玉山县| 德兴市| 中宁县| 宁陵县| 罗源县| 沛县| 尉氏县| 康定县|