自定義註解(@interface)學習

  @interface 

   關鍵字表示本類爲註解類,類結構:

            public @interface 自定義註解名 { 自定義註解體 }


    註解體中支持的元素類型:

    1.所有基本數據類型(int,float,boolean,byte,double,char,long,short)

    2.String類型

    3.Class類型

    4.enum類型

    5.Annotation類型

    6.以上所有類型的數組


簡單示例:

public @interface SecurityCheck {

	boolean open() default false;

	SecurityCheckType[] checkTypes();

	boolean justLimitFailure() default false;

	String rule() default "";

}

定義好註解後即使用,使用示例:
@SecurityCheck(open = true, justLimitFailure = true, checkTypes = SecurityCheckType.IP)


jdk提供了幾個配置/註解來配合/規範註解類的使用,一般定義於註解類上,下面一起看一下。


1.@Target

    主要用於規定註解使用的位置,參考下表(表格出自 http://blog.csdn.net/snakemoving/article/details/74364351)

取值註解使用範圍
METHOD可用於方法上
TYPE可用於類或者接口上
ANNOTATION_TYPE可用於註解類型上(被@interface修飾的類型)
CONSTRUCTOR可用於構造方法上
FIELD可用於域上
LOCAL_VARIABLE可用於局部變量上
PACKAGE用於記錄java文件的package信息
PARAMETER可用於參數上

    例子:@Target({ ElementType.METHOD })   表示該註解用於方法上


2.@Retention

    主要功能是定義註解保留時間的長短,可以設置的三個值都出自RetentionPolicy

public enum RetentionPolicy
{
  SOURCE,  CLASS,  RUNTIME;
  
  private RetentionPolicy() {}
}
      SOURCE:在源文件中有效(即源文件保留)
  CLASS:在class文件中有效(即class保留,默認策略)

  RUNTIME:在運行時有效(即運行時保留,可以通過此級別獲取註解信息)

      例子:@Retention(RetentionPolicy.RUNTIME)   也是一般用法

3.@Documented

    僅僅作爲一個標記註解,說明該註解類應該被javadoc工具記錄(默認情況下是不記錄的),不在代碼運行時產生影響。


4.@Inherited   待整理,沒搞懂


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