一、概念
注解(Annotation)是給程序(例如javac,框架等)提供某些的信息,而注釋(Comment)是給程序員提供信息。
二、定義基本語法
- 定義
public @interface Anno01 { public static final double PI=3.14; //語法是方法,但是使用上叫屬性----注解的屬性 public String name(); }
- 使用
public @interface Anno01 { public static final double PI=3.14; //語法是方法,但是使用上叫屬性----注解的屬性 public String name(); }
三、屬性
- 屬性的返回值類型
@Retention(RetentionPolicy.RUNTIME) public @interface Anno01 { public void test(); //屬性的返回值不能是任意類型,void會報錯 }
- 屬性可以有默認值
- 定義
ublic @interface Anno03 { public String attr1();//木有默認值 public String attr2() default "dasb";//有默認值 public String[] attr3();//默認默認值 public String[] attr4() default {"sb1","sb2"};//有 }
2. 使用
@Anno03(attr1= {"jhjh"},attr3= "gssf") //沒有默認值必須要為其賦值,有默認值可以重新為其賦值 public class test01 { public static void main(String[] args) { } }
- 一維數組屬性
1. 定義
public @interface Anno04 { public String[] attr(); }
2. 賦值
@Anno04(attr="sb1") //如果值得數組就有一個元素,可以省略大括號,加上也可以 public class Test05 { }
@Anno04(attr={"sb1","sb2"}) //多個值必須用大括號括起來,數組若沒有值用空大括號。
public class Test07 {
}
- 特殊屬性名 value
1. 定義
public @interface Anno05 { public String value(); public String attr() default ""; }
2. 賦值
@Anno05("zhangsan") //如果給value屬性賦值可以省略value=,如果給多個屬性賦值則不能省略 public class Test11 { }