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

Java注解與反射原理說明

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

一 點(diǎn)睛

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

一般有兩種需求:

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

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

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

二 源碼導(dǎo)讀——取得方法中全部的注解

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

三 源碼導(dǎo)讀——判斷操作是否是指定注解

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)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(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進(jìn)行斷點(diǎn)調(diào)試的方法

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

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

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

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

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

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

    Java報錯:FileNotFoundException的解決方案

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

    springboot手寫一個自己的starter源碼

    在本篇文章里小編給大家整理了關(guān)于springboot手寫一個自己的starter源碼的全部知識點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。
    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復(fù)制屬性失敗的原因及解決方案

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

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

    淺析Java Scanner 類的用法

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

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

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

最新評論

江北区| 英吉沙县| 西峡县| 九寨沟县| 阳谷县| 碌曲县| 望城县| 志丹县| 杨浦区| 巴塘县| 江山市| 夏邑县| 大埔区| 阳信县| 乌兰浩特市| 沂南县| 和硕县| 忻州市| 额尔古纳市| 乌兰察布市| 香格里拉县| 江阴市| 将乐县| 凤城市| 得荣县| 汤原县| 安新县| 会泽县| 南丹县| 民丰县| 江油市| 额尔古纳市| 杭锦后旗| 同心县| 德阳市| 吴桥县| 白玉县| 盐边县| 哈尔滨市| 金湖县| 安吉县|