(Android)注解系列-注解基本概念

寫在前面

本文目的:讓你能知道注解是什么東西,看懂注解的元注解包蓝,以及常見的注解驶社。
其他:本文的注解有動詞意思也有名詞意思,動詞的意思是注釋测萎,解釋的意思亡电。
本文結(jié)構(gòu)
1.小例子解釋
2.怎么看注解(元注解解釋)
3.常見注解

正文

一、先看一個例子

以下是Android中截取的一段代碼

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

Override是我們最常見的注解硅瞧,意味著這個方法必須是重寫父類的方法份乒,如果沒有重寫,編譯器就會給出錯誤警告

查看Override注解源代碼:

  • 注解的類型(必須)是@interface腕唧,表示@Override是一個注解
  • 這個注解用用兩個(元)注解注解
    @Target:說明Override注解只能注解方法
    @Retention:說明注解的訪問范圍(有效范圍)是在.java中或辖,不會在.class中,運行時也看不到枣接。
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

二颂暇、什么是元注解?

元注解就是標記在注解上的注解月腋。
元注解一共有以下幾種:前面四種是java5引入蟀架,第五種是Java8中引入的。
(1.8 java.lang.annotation包還引入了@Native榆骚,它不是元注解片拍,它是指明該方法調(diào)用底層的C/C++方法)

  • @Target:指明該注解的可標記范圍
元素類型 適用于
TYPE 類,接口妓肢,注解類捌省,枚舉類
ANNOTATION 注解類
FIELD 類屬性
LOCAL_VARIABLE 方法變量
METHOD 方法
CONSTRUCTOR 構(gòu)造方法
PACKAGE 包(沒見過)
PARAMETER 方法中的參數(shù)
TYPE_PARAMETER(1.8) 類參數(shù)(沒見過)
TYPE_USE(1.8) 類型(沒見過)
  • @Retention:用來指明該注解的生效范圍
元素類型 范圍 主要作用
SOURCE 源代碼(在編譯成class文件時不再保存) 用于標記提醒程序員以及IDE工具檢測等
CLASS(默認) 源代碼和.class(編譯時保存,但是在運行在VM的時不保存) 用于框架(如butterknife,dagger2等)碉钠,利用編譯時產(chǎn)生我們想要的java文件,沒有用到反射不損耗性能纲缓,但是會增加類和方法數(shù)卷拘,注意64K限制
RUNTIME 源代碼,.class文件祝高,運行時都存在 一般與反射配合使用
  • @Documented:在生成javadoc的時候?qū)⒆⒔庵械脑貎?nèi)容包含到j(luò)avadoc中栗弟。一般javadoc不會包含注解內(nèi)容。
  • @Inherited:注解可繼承的意思工闺。

例:
1.用@Inherted 注解了@Annotation_A
2.用@Annotation_A注解了類A
3.B繼承A
4.B其實也繼承了A的注解@Annotation_A

  • @Repeatable(java.1.8):表明該注解可以重復(fù)注解(需要指定重復(fù)注解等價注解)

假如我們要做一個蛋糕乍赫,用注解方法的確定蛋糕的顏色組成。代碼:

public class Cake {

    /**
     * 1.8之前
     */
    @Colors({@Color(name = "red"), @Color(name = "blue")})
    public void Create() {
    ...
    }

    /**
     * 1.8注解方式陆蟆。我們只需要在Color注解類上添加注釋@Repeatable(Colors.class)雷厂,就可以用這種方式注解,等價于上面的方式
     */
    @Color(name = "red")
    @Color(name = "blue")
    public void createCakeNew() {
    ...
    }
}

注解類Color:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(Colors.class)//表示重復(fù)注解等價于Colors
public @interface Color {
   String name() default "white";
}

注解類Colors

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Colors {
    Color[] value();
}

三、常見注解

java.lang包下的基本注解簡單介紹叠殷,更詳細內(nèi)容可以自行查看源碼注釋文檔(1.7 1.8新增的暫時不介紹)

注解 級別 作用
@Ovrride SOURCE 重寫父類方法
@Deprecated RUNTIME 提示該包/類/方法/變量已經(jīng)棄用改鲫,棄用原因可能是有bug或者有更優(yōu)的替代者
@SuppressWarnings SOURCE 抑制IDE警告,在最小的范圍使用林束,比如能在方法注釋就在方法注釋像棘,如若在類上使用會抑制這個類內(nèi)的所有警告。

結(jié)語

全文如果有不正之處還望指正诊县!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讲弄,一起剝皮案震驚了整個濱河市措左,隨后出現(xiàn)的幾起案子依痊,更是在濱河造成了極大的恐慌,老刑警劉巖怎披,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胸嘁,死亡現(xiàn)場離奇詭異,居然都是意外死亡凉逛,警方通過查閱死者的電腦和手機性宏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來状飞,“玉大人毫胜,你說我怎么就攤上這事∥鼙玻” “怎么了酵使?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長焙糟。 經(jīng)常有香客問我口渔,道長,這世上最難降的妖魔是什么穿撮? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任缺脉,我火速辦了婚禮痪欲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘攻礼。我一直安慰自己业踢,他們只是感情好,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布礁扮。 她就那樣靜靜地躺著陨亡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪深员。 梳的紋絲不亂的頭發(fā)上负蠕,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音倦畅,去河邊找鬼遮糖。 笑死,一個胖子當著我的面吹牛叠赐,可吹牛的內(nèi)容都是我干的欲账。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼芭概,長吁一口氣:“原來是場噩夢啊……” “哼赛不!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起罢洲,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤踢故,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后惹苗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體殿较,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年桩蓉,在試婚紗的時候發(fā)現(xiàn)自己被綠了淋纲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡院究,死狀恐怖洽瞬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情业汰,我是刑警寧澤伙窃,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蔬胯,受9級特大地震影響对供,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一产场、第九天 我趴在偏房一處隱蔽的房頂上張望鹅髓。 院中可真熱鬧,春花似錦京景、人聲如沸窿冯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽醒串。三九已至,卻和暖如春鄙皇,著一層夾襖步出監(jiān)牢的瞬間芜赌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工伴逸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缠沈,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓错蝴,卻偏偏與公主長得像洲愤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子顷锰,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

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