最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java注解與反射原理說明

 更新時間:2019年03月15日 11:13:18   作者:cakincqm  
今天小編就為大家分享一篇關(guān)于Java注解與反射原理說明,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

一 點睛

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

一般有兩種需求:

1 取得方法中全部的注解,通過調(diào)用getAnnotations來實現(xiàn)。

2 判斷操作是否是指定注解,通過調(diào)用getAnnotation來實現(xiàn)。

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

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

public class AccessibleObject implements AnnotatedElement {
  ...
  //取得全部Annotation
  public Annotation[] getAnnotations() {
    return getDeclaredAnnotations();
  }  
  ...
}
public final class Method extends Executable {
  ...
  public Annotation[] getDeclaredAnnotations() {
    //針對Method類,需要調(diào)用父類的getDeclaredAnnotations方法
    return super.getDeclaredAnnotations();
  }  
  ...
}
//Method的父類Executable的getDeclaredAnnotations實現(xiàn)全部注解信息的獲取
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));
  }  
  ...
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • 解決調(diào)試JDK源碼時,不能查看變量的值問題

    解決調(diào)試JDK源碼時,不能查看變量的值問題

    下面小編就為大家?guī)硪黄鉀Q調(diào)試JDK源碼時,不能查看變量的值問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java Eclipse進行斷點調(diào)試的方法

    Java Eclipse進行斷點調(diào)試的方法

    本篇文章主要介紹了Java Eclipse進行斷點調(diào)試的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Java解決浮點數(shù)計算不精確問題的方法詳解

    Java解決浮點數(shù)計算不精確問題的方法詳解

    在 Java 中,浮點數(shù)計算不精確問題指的是使用浮點數(shù)進行運算時,由于浮點數(shù)的內(nèi)部表示方式和十進制數(shù)的表示方式存在差異,導致計算結(jié)果可能出現(xiàn)誤差,本文就給大家介紹一下Java如何解決浮點數(shù)計算不精確問題,需要的朋友可以參考下
    2023-09-09
  • java讀取文件里面部分漢字內(nèi)容亂碼的解決方案

    java讀取文件里面部分漢字內(nèi)容亂碼的解決方案

    這篇文章主要介紹了java讀取文件里面部分漢字內(nèi)容亂碼的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java報錯:FileNotFoundException的解決方案

    Java報錯:FileNotFoundException的解決方案

    在Java編程中,FileNotFoundException 是一種常見的受檢異常,通常發(fā)生在試圖打開一個不存在的文件或文件路徑錯誤時,本文將詳細探討FileNotFoundException的成因、解決方案以及預防措施,幫助開發(fā)者理解和避免此類問題,需要的朋友可以參考下
    2024-06-06
  • springboot手寫一個自己的starter源碼

    springboot手寫一個自己的starter源碼

    在本篇文章里小編給大家整理了關(guān)于springboot手寫一個自己的starter源碼的全部知識點內(nèi)容,需要的朋友們學習下。
    2019-06-06
  • 解決Spring Cloud Gateway獲取body內(nèi)容,不影響GET請求的操作

    解決Spring Cloud Gateway獲取body內(nèi)容,不影響GET請求的操作

    這篇文章主要介紹了解決Spring Cloud Gateway獲取body內(nèi)容,不影響GET請求的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • BeanUtils.copyProperties復制屬性失敗的原因及解決方案

    BeanUtils.copyProperties復制屬性失敗的原因及解決方案

    這篇文章主要介紹了BeanUtils.copyProperties復制屬性失敗的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 淺析Java Scanner 類的用法

    淺析Java Scanner 類的用法

    這篇文章主要介紹了Java Scanner 類的用法,文中講解非常詳細,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • 使用IDEA反編譯沒有擦除泛型的原因解析

    使用IDEA反編譯沒有擦除泛型的原因解析

    Java泛型引入至今已有近20年,“偽泛型”已被認為是所有開發(fā)者的共識,沒有必要再在反編譯后體現(xiàn)出來反倒大大降低了可讀性,這篇文章主要介紹了使用IDEA反編譯沒有擦除泛型的原因解析,需要的朋友可以參考下
    2023-05-05

最新評論

南召县| 荃湾区| 甘洛县| 酉阳| 舟山市| 揭阳市| 开阳县| 湖北省| 宁津县| 辉县市| 台安县| 中西区| 汶川县| 林口县| 浮山县| 贵阳市| 麟游县| 龙江县| 崇阳县| 冷水江市| 襄城县| 达尔| 徐闻县| 灵台县| 珲春市| 英山县| 阜南县| 资溪县| 天全县| 丁青县| 贵定县| 贺兰县| 贡嘎县| 开化县| 镇雄县| 无为县| 岐山县| 当涂县| 饶阳县| 渭南市| 芮城县|