java的註解基礎入門
阿新 • • 發佈:2018-07-15
code 文件 static xtend over [] runt 建議 sent
1.常用的註解
@overrive繼承//繼承的方法時建議都添加該註解,防止我們不是重寫方法
@deprecated 廢棄的方法
@suppresswarning 警告信息,屬性值all表示所有的意思
2.元註解
@target描述註解使用的範圍
說明
@target(value=ElementType.值)
屬性值:
Package 使用範圍包
Type 使用範圍類接口枚舉annotation類型
Constructor 使用範圍構造器
Field 使用範圍屬性
Method 使用範圍方法
Local_VARIABLE 用於局部變量
Parameter 用於描述參數
@retention 描述註解作用的時機
@retention(RetentionPolicy.值)
Source 註解將被編譯器丟棄
Class 註解在class文件中可用,但會被VM丟棄
Runtime VM將在運行期也保留註釋,因此可以通過反射機制讀取註解的信息//需要反射獲取某些註解的信息必須添加信息
3.創建註解
public class AnnotationDemo { public static void main(String[] args) { AnnotationDemoTest1 annotationDemo1 = new AnnotationDemoTest1(); Class<? extends AnnotationDemoTest1> class1 = annotationDemo1.getClass(); if (class1.isAnnotationPresent(ReflectAnnotationdemo1.class)) { ReflectAnnotationdemo1 annotation = class1.getAnnotation(ReflectAnnotationdemo1.class); System.out.println(annotation.value()); } } }// RetentionPolicy 枚舉 RetentionPolicy.RUNTIME 運行時起作用 這樣才能反射 @Retention(RetentionPolicy.RUNTIME) // ElementType 枚舉 ElementType.TYPE 修飾於類,接口,枚舉,註解 @Target(ElementType.TYPE) @interface ReflectAnnotationdemo1 { // String test() // value可以省略 value= ,省略的前提是只有value一個屬性 String value(); } @ReflectAnnotationdemo1("111") class AnnotationDemoTest1 { }
public class AnnotationDemo2 { public static void main(String[] args) { AnnotationDemoTest2 annotationDemo1 = new AnnotationDemoTest2(); Class<? extends AnnotationDemoTest2> class1 = annotationDemo1.getClass(); if (class1.isAnnotationPresent(ReflectAnnotationdemo2.class)) { ReflectAnnotationdemo2 annotation = class1.getAnnotation(ReflectAnnotationdemo2.class); System.out.println(annotation.test()); System.out.println(annotation.test1()[0]); } } } @Retention(RetentionPolicy.RUNTIME) @interface ReflectAnnotationdemo2 { //設置默認的值 String test() default "111"; int [] test1() default {1,2}; } @ReflectAnnotationdemo2 class AnnotationDemoTest2 { }
public class AnnotationDemo3 { public static void main(String[] args) { AnnotationDemoTest3 annotationDemo1 = new AnnotationDemoTest3(); Class<? extends AnnotationDemoTest3> class1 = annotationDemo1.getClass(); if (class1.isAnnotationPresent(ReflectAnnotationdemo3.class)) { ReflectAnnotationdemo3 annotation = class1.getAnnotation(ReflectAnnotationdemo3.class); System.out.println(annotation.test()); System.out.println(annotation.test1()[0]); } } } @Retention(RetentionPolicy.RUNTIME) @interface ReflectAnnotationdemo3 { //設置默認的值 String test() default "111"; int [] test1() default {1,2}; } @ReflectAnnotationdemo3(test="222",test1={4,5}) class AnnotationDemoTest3 { }
java的註解基礎入門