注解入門-2018-11-12

  • 注釋一定是是給程序員看的,不影響代碼的執(zhí)行。
  • 注解大部分時間是給計算機看的,大部分會影響程序的編譯執(zhí)行。注解就是元數(shù)據(jù)
    • 1.編譯檢查(比如override)
    • 2.文檔注釋(生成doc文檔)


      image.png
    • 3.前面兩個基本都是java給我們提供好的,我們很少有操作空間。第三種是我們需要學(xué)習(xí)的---代碼分析,通過反射技術(shù),對帶有注釋的代碼進(jìn)行分析。
自定義注解

內(nèi)置注解定義格式,分為兩部分

image.png

選中的部分是元注解,我們暫時不用管
image.png

與正常類定義的區(qū)別只是將public class Xxx變換為@interface Xxx
@+自己定義的注解名就可以使用了
注解的本質(zhì)反編譯的結(jié)果
image.png

以上可以看出,注解本質(zhì)上就是一個接口

  • 接口之間只能繼承,不能實現(xiàn)

接口本質(zhì)上是接口的話,那么接口能定義什么,注解也能定義什么,接口可以定義常量、方法



注解中定義方法

  • 屬性就是接口中的抽象方法
    1.注解屬性不能返回void,類等


    image.png

    2.定義了屬性,在使用屬性的時候需要給屬性賦值


    image.png

    image.png

    image.png

    image.png

    .

    這就是稱之為屬性的原因。

多個值用逗號隔開


image.png

也可以給注解的屬性賦予默認(rèn)值,這樣在使用注解的時候就可以不用賦值了


image.png

如果說只有一個屬性需要復(fù)制,并且這個屬性的名稱叫做value的話,那么value就可以進(jìn)行省略了!兩個限定條件。如果有兩個屬性的話value屬性就必須顯示賦值了。

枚舉類型的值就相當(dāng)于我們的靜態(tài)常量一樣
賦值枚舉的情況。

image.png

image.png

數(shù)組賦值需要{}包裹,如果數(shù)組中只有一個值,則大括號可以省略。

元注解

用于描述注解的注解。所以本質(zhì)上還是注解。


image.png

元注解是JDK給我們定義好的

  • @Target 描述注解能夠作用的位置
  • @Retention 描述注解被保留的階段(java代碼有三個階段1.源碼階段-source 2.class階段3.runtime階段 )
  • @Documented 描述注解是否被抽取到API文檔中(javadoc 命令抽取文檔)
  • @Inherited 描述注解是否被子類繼承,如果加了該元注解的話,子類會自動繼承父類被該元注解描述的那個注解
栗子
image.png
image.png

使用注解

  • 在程序中使用(解析)注解:主要方法就是在程序運行時獲取注解中定義的屬性值(怎么辦呢?當(dāng)然是通過反射了!)
  • 有了注解之后,我們就可以用來簡化配置文件的相關(guān)工作
  • 其實注解在很多情況下的作用就是用來取代配置文件,在這種情況下注解≈配置文件
  • 我們知道反射的作用是不改變調(diào)用反射方方法中任何的代碼,可以創(chuàng)建任意類的對象,可以執(zhí)行任意方法

具體的自定義注解使用案例


image.png

image.png

image.png

以上就拿到了注解中配置的屬性值了!!!
最后根據(jù)全類名與方法名使用反射調(diào)用配置的方法就可以了


image.png

總結(jié)

image.png

另起一個話題---java執(zhí)行階段

image.png

java中萬物皆對象,所有代碼的出發(fā)點也應(yīng)該是對象,在內(nèi)存中有class類對象來描述字節(jié)碼文件
.java->.calss->加載到方法區(qū)->生成類對象->main方法進(jìn)棧執(zhí)行->new 關(guān)鍵字開辟內(nèi)存空間->根據(jù)方法區(qū)中的內(nèi)容在內(nèi)存中生成對象

java中的反射就是將類的各個組成部分封裝為各種對象Field,Meethod,構(gòu)造類對象等等

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.1 spring IoC容器和beans的簡介 Spring 框架的最核心基礎(chǔ)的功能是IoC(控制反轉(zhuǎn))容器,...
    simoscode閱讀 6,851評論 2 22
  • 效果展示圖: 代碼:
    郝特么冷閱讀 776評論 0 0
  • 這兩天的廣州終于在雨水勸說下有了一點冬天的樣子。氣溫一下從20多度降到了11度。其實氣溫也不算低,但是架不住溫差大...
    蟹總有鉗閱讀 240評論 3 4
  • 此刻,我剛剛從睡夢中醒來不久,渾身不適,因為在一個小時內(nèi)我變換了許多種睡覺姿勢,目的是不讓周圍的人明顯看到...
    小塵土閱讀 152評論 0 1
  • 白玫瑰褪了刺 白晝屑于偽裝 你迷人的笑勾兌在獵人的紅酒杯里 搖晃 窗子上 你不加熱的微笑 我緊緊抓住 緊緊抓住 空...
    雛夏閱讀 285評論 6 4

友情鏈接更多精彩內(nèi)容