android 註解

1:剛剛新版本的發佈,抽空寫下關於註解在android 開發中的使用

  在java中註解的相關的解釋:

   元註解:

        元註解的作用就是負責註解其他註解,Java5.0 定義了4個標準的 meta-annotation 類型,他們被用來聽對其他 annotation 類型作說明,

     

      @Tatget

       說明了Annotation 所修飾的對象範圍 :Annotation 可被用於 packages types ( 類 接口 枚舉 Annotation 類型) 類型成員 (方法 構造方法 成員變量 枚舉值 ) 方法參數 和本地變量 (循環變量 catch 參數) 在Annotation 類型的聲明中使用了target 可更加明晰其修飾的目標

取值(ElementType)有:

    1.CONSTRUCTOR:用於描述構造器
    2.FIELD:用於描述域
    3.LOCAL_VARIABLE:用於描述局部變量
    4.METHOD:用於描述方法
    5.PACKAGE:用於描述包
    6.PARAMETER:用於描述參數
    7.TYPE:用於描述類、接口(包括註解類型) 或enum聲明

@RetentionPoicy 

    定義改Annoation 被保留的時間長短,某些Annotation 僅出現在源代碼中,而被編譯器丟棄,而另一些卻被編譯在class 文件中,編譯在class文件中的Annotation 可能會被nijihulue 

 1.SOURCE:在源文件中有效(即源文件保留)
    2.CLASS:在class文件中有效(即class保留)
    3.RUNTIME:在運行時有效(即運行時保留)

  Retention meta-annotation類型有唯一的value作爲成員,它的取值來自java.lang.annotation.RetentionPolicy的枚舉類型值

@Documented:

  @Documented用於描述其它類型的annotation應該被作爲被標註的程序成員的公共API,因此可以被例如javadoc此類的工具文檔化。Documented是一個標記註解,沒有成員。


@Inherited:

  @Inherited 元註解是一個標記註解,@Inherited闡述了某個被標註的類型是被繼承的。如果一個使用了@Inherited修飾的annotation類型被用於一個class,則這個annotation將被用於該class的子類。

  注意:@Inherited annotation類型是被標註過的class的子類所繼承。類並不從它所實現的接口繼承annotation,方法並不從它所重載的方法繼承annotation。

  當@Inherited annotation類型標註的annotation的Retention是RetentionPolicy.RUNTIME,則反射API增強了這種繼承性。如果我們使用java.lang.reflect去查詢一個@Inherited annotation類型的annotation時,反射代碼檢查將展開工作:檢查class和其父類,直到發現指定的annotation類型被發現,或者到達類繼承結構的頂層

自定義註解:

  使用@interface自定義註解時,自動繼承了java.lang.annotation.Annotation接口,由編譯程序自動完成其他細節。在定義註解時,不能繼承其他的註解或接口。@interface用來聲明一個註解,其中的每一個方法實際上是聲明瞭一個配置參數。方法的名稱就是參數的名稱,返回值類型就是參數的類型(返回值類型只能是基本類型、Class、String、enum)。可以通過default來聲明參數的默認值。

  定義註解格式:
  public @interface 註解名 {定義體}

  註解參數的可支持數據類型:

    1.所有基本數據類型(int,float,boolean,byte,double,char,long,short)
    2.String類型
    3.Class類型
    4.enum類型
    5.Annotation類型
    6.以上所有類型的數組

  Annotation類型裏面的參數該怎麼設定: 
  第一,只能用public或默認(default)這兩個訪問權修飾.例如,String value();這裏把方法設爲defaul默認類型;   
  第二,參數成員只能用基本類型byte,short,char,int,long,float,double,boolean八種基本數據類型和 String,Enum,Class,annotations等數據類型,以及這一些類型的數組.例如,String value();這裏的參數成員就爲String;  
  第三,如果只有一個參數成員,最好把參數名稱設爲"value",後加小括號.例:下面的例子FruitName註解就只有一個參數成員。



發佈了99 篇原創文章 · 獲贊 10 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章