JAVA注解學(xué)習(xí)筆記

學(xué)習(xí)書籍

java SE5中引入的新特性之一掂骏,并在java.lang中內(nèi)置了幾種注解:

  • @Override 表示重寫父類方法
  • @Deprecated 表示方法過期
  • @SuppressWarnings 關(guān)閉不當(dāng)?shù)木幾g器警號信息

基本語法

定義注解

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Hi {
  int id();
}

注解的定義與java接口的定義很像,最終也會編譯成class文件

元注解

  1. @Target

表示注解可以使用的地方煮嫌」酰可能的ElementType參數(shù)包括:

  • CONSTRUCTOR: 構(gòu)造器聲明
  • FIELD:屬性聲明
  • LOCAL_VARIABLE:局部變量聲明
  • METHOD: 方法聲明
  • PARAMETER:參數(shù)聲明
  • PACKAGE:包聲明
  • TYPE:類称开、接口或enum聲明
  • ANNOTATION_TYPE: 注解聲明
  1. @Retention

表示在什么級別保存該注解信息八毯∑せ瘢可選的RetentionPolicy參數(shù)包括:

  • SOURCE: 源碼級別焙蚓,將被編譯器丟棄
  • CLASS: 注解在class文件中可用,但會被VM丟棄洒宝,此為默認(rèn)級別
  • RUNTIME: VM運行期也保留购公,因此可通過反射機制讀取注解的信息
  1. @Documented

將此注解包含在Javadoc中

  1. @Inherited

允許子類繼承父類中的注解

編寫注解處理器

# 使用注解
public class HiEntity {
  @Hi(id=22)
  public void tetst() {

  }
}
# 注解處理器
public class HiChecker {
  public static void checker(Class<?> cl) {
    for (Method m: cl.getDeclaredMethods()) {
      Hi hi = m.getAnnotation(Hi.class);
      if (hi != null) {
        System.out.println(hi.id());
      }
    }

  }
  public static void main(String[] args) {
    checker(HiEntity.class);
  }

注解元素

注解元素(屬性)可用的類型如下:

  • 所有基本類型(int、float雁歌、boolean等)
  • String
  • Class
  • enum
  • Annotation
  • 以上類型的數(shù)組

如果使用其它類宏浩,編譯會報錯,也不能使用包裝類型

默認(rèn)值

注解的元素必須要具有值靠瞎,要么元素必須有默認(rèn)值比庄,要么使用注解時必須指定值
非基本類型的元素,不可指定為null值乏盐,可自定義一些特殊的值佳窑,如空字符串或負(fù)數(shù)
屬性名為value時,使用注解指定value值時可省略父能,如@XX('aa')等價@XX(value='aa'),指定多個屬性時神凑,都不能省略變量名

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市法竞,隨后出現(xiàn)的幾起案子耙厚,更是在濱河造成了極大的恐慌强挫,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薛躬,死亡現(xiàn)場離奇詭異俯渤,居然都是意外死亡,警方通過查閱死者的電腦和手機型宝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門八匠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人趴酣,你說我怎么就攤上這事梨树。” “怎么了岖寞?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵抡四,是天一觀的道長。 經(jīng)常有香客問我仗谆,道長指巡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任隶垮,我火速辦了婚禮,結(jié)果婚禮上狸吞,老公的妹妹穿的比我還像新娘。我一直安慰自己蹋偏,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布暖侨。 她就那樣靜靜地躺著椭住,像睡著了一般崇渗。 火紅的嫁衣襯著肌膚如雪字逗。 梳的紋絲不亂的頭發(fā)上宅广,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音跟狱,去河邊找鬼俭厚。 笑死,一個胖子當(dāng)著我的面吹牛驶臊,可吹牛的內(nèi)容都是我干的挪挤。 我是一名探鬼主播叼丑,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼扛门,長吁一口氣:“原來是場噩夢啊……” “哼鸠信!你這毒婦竟也來了论寨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤葬凳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后火焰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡昌简,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了纺酸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡餐蔬,死狀恐怖佑附,靈堂內(nèi)的尸體忽然破棺而出樊诺,到底是詐尸還是另有隱情音同,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布权均,位于F島的核電站,受9級特大地震影響叽赊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜必指,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望梅割。 院中可真熱鬧俭驮,春花似錦喷好、人聲如沸笤闯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽书蚪。三九已至,卻和暖如春殊校,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背为流。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留敬察,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓莲祸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锐帜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 什么是注解(Annotation):Annotation(注解)就是Java提供了一種元程序中的元素關(guān)聯(lián)任何信息和...
    九尾喵的薛定諤閱讀 3,161評論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理允瞧,服務(wù)發(fā)現(xiàn)蛮拔,斷路器述暂,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 我們平常寫Java代碼语泽,對其中的注解并不是很陌生,比如說寫繼承關(guān)系的時候經(jīng)常用到@Override來修飾方法踱卵。但是...
    于曉飛93閱讀 713評論 1 6
  • 我想把席慕蓉的《一棵開花的樹》送給此刻打開文章的你: 如何,讓你遇見我惋砂?在我最美麗的時刻。為這——我已在佛前求了五...
    瑾蘭閱讀 698評論 0 2
  • 時間的分秒在畫面中停留西饵,一晃數(shù)月……兩個課程結(jié)束后,回頭翻看自己的作業(yè)眷柔,很是感動!從最初的挨不到邊驯嘱,到現(xiàn)在...
    kiko_H閱讀 376評論 19 17