元註解

汽车评价 2024-04-12 08:00 19次浏览 0 条评论 taohigo.com

元註解的作用是解釋註解其他註解,java定義瞭4個標準的metaannotation類型,它們被用作對其他的annotation類型說明。元註解分類如下:

  • @Target:用於描述註解的使用范圍
  • @Retention:表示需要在什麼級別保存註解信息,用於描述註解的聲明周期,其中SOURCE<CLASS<RUNTIME
  • @Document:說明該註解將包含在javadoc中
  • @Inherited:說明子類可以繼承父類中的該註解

自定義註解,使用元註解修飾,【AnnotationTest.java】

package day15;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@interface AnnotationTest {

}

class Test01 {
//註解可以顯示賦值,如果沒有默認值就必須給註解賦值
@AnnotationTest1(name = "huahua", sclass = {})
public void Test01() {

}

//如果註解隻有一個參數,且為value時可以省略參數名,其他參數名不可以省略
@AnnotationTest2("")
public void test02() { //一個類中方法不能有多個public修飾

}
}

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface AnnotationTest1 {
//註解的參數,類型+參數名()[default 默認值]
String name() default "";

int age() default 0;

int id() default -1;

String[] sclass();
}

/*註解的使用范圍有:TYPE、FIELD、METHOD、PARAMETER、CONSTRUCTOR、LOCAL_VARIABLE、
ANNOTATION_TYPE、PACKAGE、TYPE_PARAMETER、TYPE_USE
*/
@Target({ElementType.METHOD, ElementType.TYPE})
//註解的聲明周期有:SOURCE、CLASS、RUNTIME
@Retention(RetentionPolicy.RUNTIME)
@interface AnnotationTest2 {
//註解的參數,類型+參數名()[default 默認值]
String[] value();
}