Java注解

Java注解

注解實際就是一種元數(shù)據(jù) 為程序元素設(shè)置元數(shù)據(jù) 并且可以對程序執(zhí)行沒有影響初斑。

元數(shù)據(jù)

描述數(shù)據(jù)的數(shù)據(jù) 元數(shù)據(jù)可以為程序元素(如方法匹厘、類等)上添加額外信息侥猬。元數(shù)據(jù)作用大概可以分為三類:

  1. 編寫文檔:通過代碼里標識的元數(shù)據(jù)生成文檔 比如Javadoc
  2. 代碼分析:通過代碼里標識的元數(shù)據(jù)對代碼進行分析 比如利用反射獲取代碼中的元數(shù)據(jù)
  3. 編譯檢查:通過代碼里標識的元數(shù)據(jù)可以讓編譯器實現(xiàn)編譯檢查 比如Java提供的一些注解SuppressWarnings

Annotation類型

根據(jù)使用方法和用途注解可以分為三類:

  1. 元注解
  2. 系統(tǒng)內(nèi)置注解
  3. 自定義注解

元注解

元注解是注解其他注解的注解碧浊。目前Java有5個元注解赶么,他們是:

  • Retention

描述注解被保留的時間長短,有三個取值分別是:RetentionPolicy.SOURCE(注解僅存在于源碼中)替久、RetentionPolicy.CLASS( 默認的保留策略凉泄,注解會在class字節(jié)碼文件中存在)、RetentionPolicy.RUNTIME(在運行時可以通過反射獲取到)

如果我們想要通過反射獲取注解那么應(yīng)該使用RetentionPolicy.RUNTIME蚯根。

  • Target

    描述注解作用的對象范圍后众。

    @Target(ElementType.TYPE) 作用接口、類颅拦、枚舉蒂誉、注解
    @Target(ElementType.FIELD) 作用屬性字段、枚舉的常量
    @Target(ElementType.METHOD) 作用方法
    @Target(ElementType.PARAMETER) 作用方法參數(shù)
    @Target(ElementType.CONSTRUCTOR) 作用構(gòu)造函數(shù)
    @Target(ElementType.LOCAL_VARIABLE)作用局部變量
    @Target(ElementType.ANNOTATION_TYPE)作用于注解(@Retention注解中就使用該屬性)
    @Target(ElementType.PACKAGE) 作用于包
    @Target(ElementType.TYPE_PARAMETER) 作用于類型泛型距帅,即泛型方法右锨、泛型類、泛型接口 (jdk1.8加入)
    @Target(ElementType.TYPE_USE) 類型使用.可以用于標注任意類型除了 class (jdk1.8加入)

  • Documented

作用是能夠?qū)⒆⒔庵械脑匕?Javadoc 中去碌秸。

  • Inherited

一個被@Inherited注解了的注解修飾了一個父類绍移,如果他的子類沒有被其他注解修飾,則它的子類也繼承了父類的注解讥电。

  • Repeatable

表示注解可以同時作用一個對象多次蹂窖,但是每次作用注解又可以代表不同的含義。

系統(tǒng)內(nèi)置注解

  • SuppressWarnings
    告知編譯器忽略特定的異常信息 僅保留在源文件中
  • Deprecated
    表示該程序元素已過時 用于除注解類型聲明之外的所有元素允趟,保留時長為運行時恼策。
  • FunctionalInterface
    Java 8 開始支持,標識一個匿名函數(shù)或函數(shù)式接口潮剪。 保留時長為運行時
  • override
    覆寫父類方法 僅在源文件中保留

Android提供了眾多注解比如@Keep、@NonNull分唾、@Nullable抗碰、@StringRes等等

自定義注解

可以使用 @interface 自定義注解,其中的每一個方法實際上是聲明了一個配置參數(shù)绽乔。方法的名稱就是參數(shù)的名稱弧蝇,返回值類型就是參數(shù)的類型(返回值類型只能是 基本類型、Class折砸、String看疗、enum)∧朗冢可以通過 default 來聲明參數(shù)的默認值两芳。

注解元素必須有確定的值,要么在定義注解的默認值中指定去枷,要么在使用注解時指定怖辆,非基本類型的注解元素的值不可為null是复。因此, 使用空字符串或0作為默認值是一種常用的做法。

注解應(yīng)用

  • Apt 注解處理器竖螃,用來在編譯期掃描和處理注解淑廊,通過注解來生成 Java 文件
  • 插樁,編譯后處理篩選
  • 運行時注解 反射獲取注解

一小時搞明白自定義注解(Annotation)

教你實現(xiàn)一個輕量級的注解處理器(APT)

注解(Annotation)-Android講解

詳盡的Android編譯時注解處理器教程

Android中注解的一些總結(jié)

字節(jié)碼插樁--你也可以輕松掌握

Android 自定義注解處理器并生成 json 文件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末特咆,一起剝皮案震驚了整個濱河市季惩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腻格,老刑警劉巖画拾,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荒叶,居然都是意外死亡碾阁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門些楣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脂凶,“玉大人,你說我怎么就攤上這事愁茁〔锨眨” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵鹅很,是天一觀的道長嘶居。 經(jīng)常有香客問我,道長促煮,這世上最難降的妖魔是什么邮屁? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮菠齿,結(jié)果婚禮上佑吝,老公的妹妹穿的比我還像新娘。我一直安慰自己绳匀,他們只是感情好芋忿,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疾棵,像睡著了一般戈钢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上是尔,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天殉了,我揣著相機與錄音,去河邊找鬼嗜历。 笑死宣渗,一個胖子當著我的面吹牛抖所,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播痕囱,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼田轧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鞍恢?” 一聲冷哼從身側(cè)響起傻粘,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帮掉,沒想到半個月后弦悉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蟆炊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年稽莉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涩搓。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡污秆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昧甘,到底是詐尸還是另有隱情良拼,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布充边,位于F島的核電站庸推,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浇冰。R本人自食惡果不足惜贬媒,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肘习。 院中可真熱鬧掖蛤,春花似錦、人聲如沸井厌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仅仆。三九已至,卻和暖如春垢袱,著一層夾襖步出監(jiān)牢的瞬間墓拜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工请契, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留咳榜,地道東北人夏醉。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像涌韩,于是被迫代替她去往敵國和親畔柔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345