Java註解(annontation)簡說

Java註解簡說

一、Annontation簡介:

        Annontation是Java5開始引入的新特徵。中文名稱通常叫註解。java

        它提供了一種安全的相似註釋的機制,用來將任何的信息或元數據(metadata)與程序元素(類、方法、成員變量等)進行關聯。安全

        更通俗的意思是爲程序的元素(類、方法、成員變量)加上更直觀更明瞭的說明,這些說明信息是與程序的業務邏輯無關,而且是供指定的工具或框架使用的。框架

        Annontation像一種修飾符同樣,應用於包、類型、構造方法、方法、成員變量、參數及本地變量的聲明語句中。ide

 

二、默認的三個Annotation類型: 

 @Override:  只能用在方法之上的,用來告訴別人這一個方法是改寫父類的。 
 @Deprecated建議別人不要使用舊的API的時候用的,編譯的時候會用產生警告信息,能夠設定在程序裏的全部的元素上。
 @SuppressWarnings:這一個類型能夠來暫時把一些警告信息消息關閉。函數

 

三、怎樣設計本身的Annotation

一、例子:

package annotation;   
    
  import java.lang.annotation.Documented;   
  import java.lang.annotation.ElementType;   
  import java.lang.annotation.Retention;   
  import java.lang.annotation.RetentionPolicy;   
  import java.lang.annotation.Target;   
  //做用範圍
  @Target(ElementType.TYPE)
  //RetentionPolicy.RUNTIME這種類型的Annotations將被JVM保留,因此他們能在運行時被JVM或其餘使用反射
  @Retention(RetentionPolicy.RUNTIME)   
  //註解doc文檔信息
  @Documented  
  public @interface Description {   
      String value();   
  }

        @interface是一個關鍵字,在設計annotations的時候必須把一 個類型定義爲@interface,而不能用class或interface關鍵字。工具

二、註解簡介:

@Target:

@Target裏面的ElementType是用來指定Annotation類型能夠用在哪一些元素上測試

①TYPE(類型  TYPE(類型)是指能夠用在Class,Interface,Enum和Annotation類型上)spa

②FIELD(應用在屬性.net

③METHOD(應用在方法)設計

④PARAMETER(應用在參數)

⑤CONSTRUCTOR(應用在構造函數)

⑥LOCAL_VARIABLE(應用在局部變量)

⑦ANNOTATION_TYPE(應用在註解)

⑧PACKAGE(應用在)

 注:若是Annotation類中沒有加@Target註解,則默承認以做用在以上全部。

此註解意義就是指定註解的應用範圍。

@Retention:

@Retention(保留)註解說明,這種類型的註解會被保留到哪一個階段. 有三個值:
①RetentionPolicy.SOURCE —— 這種類型的Annotations只在源代碼級別保留,編譯時就會被忽略
②RetentionPolicy.CLASS —— 這種類型的Annotations編譯時被保留,在class文件中存在,但JVM將會忽略
③RetentionPolicy.RUNTIME —— 這種類型的Annotations將被JVM保留,因此他們能在運行時被JVM或其餘使用反射機制的代碼所讀取和使用

通常默認設置爲: @Retention(RetentionPolicy.RUNTIME) ,這樣在程序運行時候就能發現到這個註解。

@Documented:

@Documented 註解代表這個註解應該被 javadoc工具記錄.

默認狀況下,javadoc是不包括註解的,但若是聲明註解時指定了 @Documented,則它會被 javadoc 之類的工具處理, 因此註解類型信息也會被包括在生成的文檔中。

例如:

一、寫註解類

@Target(ElementType.METHOD)
// RetentionPolicy.RUNTIME —— 這種類型的Annotations將被JVM保留,因此他們能在運行時被JVM或其餘使用反射
@Retention(RetentionPolicy.RUNTIME)
// 註解doc文檔信息
@Documented()
public @interface UseDocumented {
	String Document();
}

二、寫應用類

public class UseAnnotations {
	public static void main(String arg[]) {
		new UseAnnotations().doSomeRetention();
		new UseAnnotations().doSomeDocumented();
	}

	@UseDocumented(Document = "保留註解信息測試")
	public void doSomeRetention() {
		System.out.printf("測試註解類型 'Retention'");
	}

	@UseDocumented(Document = "Hello document")
	public void doSomeDocumented() {
		System.out.printf("測試註解類型 'Documented'");
	}
}

三、生成doc,查看顯示效果

相關文章
相關標籤/搜索