1. 程式人生 > >java的註解基礎入門

java的註解基礎入門

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的註解基礎入門