|
http://yaofeng911./blog/444704
JAVA從J2SE5開始提供名為annotation(注釋,標(biāo)注)的功能。Java的annotation,可以附加在package, class, method, field等上面,相當(dāng)于給它們添加了額外的輔助信息。附加在package, class, method, field等上的Annotation,如果沒有外部解析工具等對(duì)其加以解析和處理的情況,本身不會(huì)對(duì)Java的源代碼或class等產(chǎn)生任何影響,也不會(huì)對(duì)它們的執(zhí)行產(chǎn)生任何影響。 Java標(biāo)準(zhǔn)Annotation @Deprecated 相當(dāng)于Javadoc的@deprecated,被@Deprecated標(biāo)注的對(duì)象class, method等被注明為不推薦使用。主要用于javac等編譯工具。 Java標(biāo)準(zhǔn)Annotation的使用 @Deprecated: 1. @Deprecated 2. public class TestBean { 3. … 4. }
1. @SuppressWarnings("serial") 2. public class TestBean implements java.io.Serializable { 3. … 4. } 5. 6. @SuppressWarnings(value = {"serial", "unchecked"}) 7. public String doSth() { 8. … 9. } @Override 1. @Override 2. public String doSth() { 3. … 4. } Annotation的定義 定義方法: public @interface MyAnnotation {}
1. public @interface MyAnnotation { 2. public String value(); 3. }
1. @Retention(RetentionPolicy.RUNTIME) 2. @Target(ElementType.METHOD) 3. public @interface MyAnnotation { 4. public String value(); 5. public String [] multiValues(); 6. int number() default 0; 7. 8. } 該例定義了一個(gè)具有多方法的Annotation。并設(shè)置其中一個(gè)方法number的默認(rèn)值為0。multiValues 方法定義為數(shù)組類型。Annotation定義可以用MetaAnnotation(元注釋)修飾。MetaAnnotation有以下2個(gè): @Retention @Retention 可以設(shè)置為RetentionPolicy類型的值。
@Target @Target表明Annotation可以附加在哪種JAVA元素之上,可以設(shè)置為java.lang.annotation.ElementType數(shù)組類型的值。 1. @Target(ElementType.METHOD)
1. @Target(value={ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.LOCAL_VARIABLE, ElementType.METHOD}) ElementType是一個(gè)枚舉類型,它具有以下定義:
interface和@interface的區(qū)別
首先一個(gè)是java語句,一個(gè)是java annotation
1. 什么是JAVA Annotation Java 從1.5開始提供了 Annotation (注釋,標(biāo)注),它用來修飾應(yīng)用程序的元素(類,方法,屬性,參數(shù),本地變量,包、元數(shù)據(jù)),編譯器將其與元數(shù)據(jù)一同存儲(chǔ)在 class 文件中,運(yùn)行期間通過 Java 的反射來處理對(duì)其修飾元素的訪問。Annotation 僅僅用來修飾元素,而不能影響代碼的執(zhí)行。只有通過其配套的框架或工具才能對(duì)其信息進(jìn)行訪問和處理。 2. 區(qū)別 interface就不用說了 @interface 是用來修飾 Annotation 的,請(qǐng)注意,它不是 interface。這個(gè)關(guān)鍵字聲明隱含了一個(gè)信息:它是繼承了 java.lang.annotation.Annotation 接口,而不是聲明了一個(gè) interface。 |
|
|