詳解JDK 5 Annotation 注解之@Target的用法引見。本站提示廣大學習愛好者:(詳解JDK 5 Annotation 注解之@Target的用法引見)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解JDK 5 Annotation 注解之@Target的用法引見正文
媒介
今朝,愈來愈多的架構設計在應用注解,例如spring3.0、struts2等框架。讓我們先來看看注解的界說。以下是一段應用了JDK 5 Annotation @Target的代碼:
@Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface AsynLog { }
1、@Target的用法
java.lang.annotation.Target
用於設定注解應用規模
java.lang.annotation.ElementType
Target經由過程ElementType來指定注解可以使用規模的列舉聚集
2、ElementType的用法
取值 注解應用規模 METHOD 可用於辦法上 TYPE 可用於類或許接口上 ANNOTATION_TYPE 可用於注解類型上(被@interface潤飾的類型) CONSTRUCTOR 可用於結構辦法上 FIELD 可用於域上 LOCAL_VARIABLE 可用於部分變量上 PACKAGE 用於記載java文件的package信息 PARAMETER 可用於參數上
這裡重點解釋下:ElementType. PACKAGE。它其實不是應用在普通的類中,而是用在固定的文件package-info.java中。這裡須要強調定名必定是“package-info”。因為package-info.java其實不是一個正當的類,應用eclipse創立類的方法會提醒不正當,所以須要以創立文件的方法來創立package-info.java。
例如,界說可以使用規模PACKAGE:
@Target({ElementType.PACKAGE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface AsynLog { }
那末,創立文件:package-info.java,內容以下:
@AsynLog
package org.my.commons.logs.annotation;
重點解釋:注解只能在ElementType設定的規模內應用,不然將會編譯報錯。例如:規模只包括ElementType.METHOD ,則注解該注解只能應用在類的辦法上,超越應用規模將編譯異常。