Java注解學(xué)習(xí)

為什么要學(xué)習(xí)注解

  1. 看懂別人的代碼
  2. 會(huì)用注解 編程簡潔 代碼清晰
  3. 讓別人高看一眼(會(huì)自定義注解)

注解的概念

Java 提供了一種原程序中的元素關(guān)聯(lián)任何信息和任何元數(shù)據(jù)的途徑和方法。

Java中的常見注解

@Override
@De

注解的分類

  1. 源碼注解:注解只在源碼中存在,編譯稱.class 文件就不存在了巡莹。
  2. 編譯時(shí)注解:注解在源碼和編譯文件中都存在话浇。
  3. 運(yùn)行時(shí)注解:在運(yùn)行階段仍舊起作用,甚至?xí)绊戇\(yùn)行邏輯的注解癣诱。
  4. 元注解:注解的注解

自定義注解的語法要求

  1. 類使用@interface 關(guān)鍵字定義注解
  2. 注解的成員類型是受限的墓拜,合法的類型包括原始類型及String,Class,Annotation,Enumeration
  3. 如果注解只有一個(gè)成員蚁飒,則成員名必須為value() ,在使用時(shí)可以忽略成員名和賦值號(=)
  4. 注解可以沒有成員,稱為標(biāo)示注解
public @interface Description{
    String desc(); // 成員無參 無異常拋出
    String author();
    int age() default 18;
}

元注解

@Target({ElementType.METHOD,ElementType.TYPE})// 注解的作用域
@Retention(RetentionPolicy.RUNTIME)// 生命周期 source class runtime
@Inherited //  允許子類繼承
@Documented // 生成 javadoc 的時(shí)候會(huì)包含注解信息
public @interface Description {
    String desc();
    String author();
    int age() default 18;
}

使用自定義注解

    @<注解名>(<成員名1>=<成員值1>,<成員名2>=<成員名2>,...)

    @Description(desc = "I am eyeColor",author = "Somebody",age = 18)
    public String eyeColor(){
        return "red";
    }

解析注解

通過反射獲取類锅风、函數(shù)或成員上的運(yùn)行時(shí)注解信息酥诽,從而實(shí)現(xiàn)動(dòng)態(tài)控制程序運(yùn)行的邏輯。

public class ParseAnn {
    public static void main(String[] args){
        // 1. 使用類加載器加載類
        try {
            Class c = Class.forName("MapDemo");
            //2 找到類上面的注解
            boolean isExist = c.isAnnotationPresent(Description.class);
            if (isExist){
                // 3. 拿到注解實(shí)例
                Description d = (Description) c.getAnnotation(Description.class);
                System.out.print(d.desc());
            }
            // 4. 找到方法上的注解
            Method[] ms = c.getMethods();
            for (Method m:ms
                 ) {
                boolean isMExist = m.isAnnotationPresent(Description.class);
                if (isMExist){
                    Description d = m.getAnnotation(Description.class);
                    System.out.print(d.desc());
                }

            }
            for (Method m:ms
                 ) {
                Annotation[] as = m.getAnnotations();
                for (Annotation a: as
                     ) {
                    if (a instanceof Description){
                        Description d = (Description) a;
                        System.out.print(d.desc());
                    }
                }
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末皱埠,一起剝皮案震驚了整個(gè)濱河市肮帐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌边器,老刑警劉巖泪姨,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饰抒,居然都是意外死亡肮砾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門袋坑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仗处,“玉大人,你說我怎么就攤上這事枣宫∑攀模” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵也颤,是天一觀的道長洋幻。 經(jīng)常有香客問我,道長翅娶,這世上最難降的妖魔是什么文留? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任好唯,我火速辦了婚禮,結(jié)果婚禮上燥翅,老公的妹妹穿的比我還像新娘骑篙。我一直安慰自己,他們只是感情好森书,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布靶端。 她就那樣靜靜地躺著,像睡著了一般凛膏。 火紅的嫁衣襯著肌膚如雪杨名。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天猖毫,我揣著相機(jī)與錄音台谍,去河邊找鬼。 笑死鄙麦,一個(gè)胖子當(dāng)著我的面吹牛典唇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胯府,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼介衔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了骂因?” 一聲冷哼從身側(cè)響起炎咖,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寒波,沒想到半個(gè)月后乘盼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俄烁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年绸栅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片页屠。...
    茶點(diǎn)故事閱讀 39,745評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粹胯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辰企,到底是詐尸還是另有隱情风纠,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布牢贸,位于F島的核電站竹观,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜臭增,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一懂酱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧速址,春花似錦玩焰、人聲如沸由驹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔓榄。三九已至并炮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甥郑,已是汗流浹背逃魄。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留澜搅,地道東北人伍俘。 一個(gè)月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像勉躺,于是被迫代替她去往敵國和親癌瘾。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評論 2 354

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,085評論 25 707
  • 難得饵溅,也算百年不遇妨退,需要值班時(shí),我留了下來蜕企。而只比我女兒大兩歲的小同事咬荷,在下午就自告奮勇要陪我,所以待其他姐妹...
    田園1981閱讀 239評論 2 3
  • 黃義達(dá)轻掩,新加坡歌手幸乒,2004年出道臺灣…… “2007年是黃義達(dá)比較艱難的一年,發(fā)生很多的事情唇牧,個(gè)人感情不順罕扎、家里...
    35f8a119f405閱讀 5,161評論 1 2
  • 沒有現(xiàn)金的狀態(tài)已持續(xù)大半個(gè)月壳影。 下午臨時(shí)起意去頤和園, 到售票口才想起口袋沒現(xiàn)金弥臼, 不打算原路返回宴咧, 故決定找買票...
    西西復(fù)嘻嘻閱讀 166評論 0 0
  • “泡椒”之后君諾從沒一個(gè)人去過超市,因?yàn)榱宅槤M目的商品對他來說都是回憶径缅,就是這回憶會(huì)讓他傷感好久掺栅,所以這就是他小...
    蘇君諾閱讀 215評論 0 0