注解语法结构:
[public] @interface 注解名 {
[属性1;]
[属性2;]
...
[属性n;]
}//[]表示可省略
//属性语法结构:
数据类型 属性名() [default 默认属性值];
例:
package venus;
public @interface Autowired {
String value() default "";//定义了一个String类型的属性,默认值为""
}
注意:
1.注解属性默认没有默认值,如果注解中定义了无默认值的注解属性,则使用该注解时必须指定值:
package venus;
public @interface Autowired {
String value();
}
package venus;
@Autowired()//错误,value没有设定默认值,故必须赋值
public class Test {
}
2.如果注解属性名为value,使用该注解时可以直接赋值:
package venus;
public @interface Autowired {
String value();
}
package venus;
@Autowired("")//由于属性为value,故此出等同于@Autowired(value = "")
public class Test {
}
3.如果注解属性的数据类型为数组类型,赋多个值时必须使用{}括起来;但若只赋一个值,则无需使用{}:
package venus;
public @interface Autowired {
String[] value();
}
package venus;
//@Autowired("one") 由于数组中只有一个值,故大括号可以省略
//@Autowired({"one","two"}) 由于数组中不止一个值,故大括号不可省略
public class Test {
}
4.如果注解属性有多个,则赋值时必须通过 属性名 = 来赋值:
package venus;
public @interface Autowired {
String name();
String[] value();
}
package venus;
@Autowired(name = "小明",value = "王晓明")//赋值不可省略属性名,若属性有默认值可不赋值
public class Test {
}