跟王老師學註解(三):元註解

跟王老師學註解(三):元註解

主講教師:王少華   QQ羣號:483773664

元註解,是用來修飾其餘的註解定義。java.lang.annotation包下提供了4個元註解,分別是@Target註解、@Retention註解、@Documented註解以及@Inherited註解。
java


1、@Target

(一)簡介

  • 用於指定被修飾的註解能用於修飾哪些程序元素
    api

  • @Target註解類型有惟一的value做爲成員變量,value的類型爲java.lang.annotation.ElementType[]類型。app

  • @Target的成員變量value爲以下值時,則可指定被修飾的註解只能按以下聲明進行標註ide

ElementType.ANNOTATION_TYPE:被修飾的註解只能用來修飾註解工具

ElementType.CONSTRUCTOR:只能修飾構造方法spa

ElementType.FIELD:只能修飾成員變量.net

ElementType.LOCAL_VARIABLE:只能修飾局部變量3d

ElementType.METHOD:只能修飾方法聲明code

ElementType.PACKAGE:只能修飾包blog

ElementType.PARAMETER:只能用來修飾參數

ElementType.TYPE:能夠用來修飾類、接口、枚舉聲明

(二)使用方法

查看@SuppressWarning的源碼


2、@Retention註解

(一)簡介

@Retention註解描述了被其修飾的註解是否被編譯器丟棄或者保留在class文件中。默認狀況下,註解被保存在class文件中,但在運行時並不能被反射訪問。

@Rentention包含一個RetentionPolicy類型的value成員變量,其取值來自java.lang.annotation.RetentionPolicy的枚舉類型值,有以下3個取值:

RetentionPolicy.CLASS(默認值):編譯器將把註解記錄在class文件中,當運行Java程序時,Java程序時,Java虛擬機再也不保留註解

RetentionPolicy.RUNTIME:編譯器將把註解記錄在class文件中,當運行Java程序時,Java虛擬機也會保留註解,程序能夠經過反射獲取該註解

RetentionPolicy.SOURCE 編譯器將直接丟棄被修飾的註解

(二)使用方法


因爲@SuppressWarning的做用只是取消編譯期的警告,因此@SuppressWarning不須要保存。


3、@Documented註解

(一)簡介

@Documented用於指定被修飾的註解將被javadoc工具提取成文檔。

若是定義註解時使用了@Documented修飾,則全部使用該註解修飾的程序元素的API文檔中都將包含該註解說明。

@Documented註解類型中沒有成員變量

(二)使用方法



(三)javadoc命令

javadoc命令參數有50多個,這裏只簡單介紹三個參數: -d,-subpackages,-sourcepath

-d 指定API文檔的輸出目錄,默認是當前目錄。建議老是指定該參數。
-sourcepath 指定源代碼路徑,默認是當前目錄。 此參數一般是必須的。
-subpackages 以遞歸的方式處理各子包。關鍵參數!若是不使用本參數,每次只能處理一個子包(或需手工列出全部子包)。

使用參數 -author 能夠將做者信息(@author ***)導出到最終生成的API文檔中, -version 能夠生成版本信息。若是是本身寫的一個包,千萬不要忘了用 -author

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package cn.net.imentors;
 
import javax.annotation.Resources;
/**
  * 程序入口
  * @author wangsh
  * @createDate:2016年6月1日
  * @version:v1.0
  * 功能描述:
  */
@Resources ({})
public class JavadocTest {
      public static void main(String[] args)
         {
             System.out.println( "hello!javadoc" );
         }
 
}
1
2
3
4
5
6
7
8
9
public class Person {
     /**
      * age屬性
      */
     public int age;
     public int count;
     public Person() {
     }
}


1
D:\>javadoc -d d:\api -sourcepath d:\src -subpackages cn.net.imentors -version -author

4、@Inherited註解

(一)簡介

@Inherited註解用於指定被修飾的註解將具備繼承性。

若是某個類使用了定義時被@Inherited修飾的註解,則其子類會自動具備這個註解。

(二)@Inherited的使用

容許子類繼承父類的註解

留到下一節,再給你們舉例說明@Inherited註解的使用。













相關文章
相關標籤/搜索