java中註解的使用與實例

一、spring中的一段代碼:spring

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {數組


String value() default "";ide


boolean required() default true;ui


String defaultValue() default ValueConstants.DEFAULT_NONE;spa

}繼承

二、內置註解接口

Java SE5內置了三種標準註解:ci

     @Override,表示當前的方法定義將覆蓋超類中的方法。get

     @Deprecated,使用了註解爲它的元素編譯器將發出警告,由於註解@Deprecated是不同意使用的代碼,被棄用的代碼。編譯器

     @SuppressWarnings,關閉不當編譯器警告信息。

三、用於建立的註解

Java還提供了4中註解,專門負責新註解的建立。

@Target

表示該註解能夠用於什麼地方,可能的ElementType參數有:

CONSTRUCTOR:構造器的聲明

FIELD:域聲明(包括enum實例)

LOCAL_VARIABLE:局部變量聲明

METHOD:方法聲明

PACKAGE:包聲明

PARAMETER:參數聲明

TYPE:類、接口(包括註解類型)或enum聲明

@Retention

表示須要在什麼級別保存該註解信息。可選的RetentionPolicy參數包括:

SOURCE:註解將被編譯器丟棄

CLASS:註解在class文件中可用,但會被VM丟棄

RUNTIME:VM將在運行期間保留註解,所以能夠經過反射機制讀取註解的信息。

@Document

將註解包含在Javadoc中

@Inherited

容許子類繼承父類中的註解

實例說明:

第一個註解類中,除了@符號,註解很像是一個接口。定義註解的時候須要用到元註解,上面用到了@Target和@RetentionPolicy,它們的含義在上面的表格中已經給出。

在註解中通常會有一些元素以表示某些值。註解的元素看起來就像接口的方法,惟一的區別在於能夠爲其制定默認值。沒有元素的註解稱爲標記註解,如:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {

}

註解的可用的類型包括如下幾種:全部基本類型、String、Class、enum、Annotation、以上類型的數組形式。元素不能有不肯定的值,即要麼有默認值,要麼在使用註解的時候提供元素的值。並且元素不能使用null做爲默認值。註解在只有一個元素且該元素的名稱是value的狀況下,在使用註解的時候能夠省略「value=」,直接寫須要的值便可。

四、定義與使用

定義

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UseItem {
      public String id();
      public String desc() default "";
}

使用

 public class A{
      @UseCase(id = 101, desc= "A is a")
      //方法
  
      @UseCase(id = 202)
     //方法
}

使用註解最主要的部分在於對註解的處理,那麼就會涉及到註解處理器。註解處理器就是經過反射機制獲取被檢查方法上的註解信息,而後根據註解元素的值進行特定的處理。

m.getAnnotation();方法
相關文章
相關標籤/搜索