自定义注解语法结构:
[public] @interface 注解名 {
[属性1;]
[属性2;]
...
[属性n;]
}
注解属性语法结构:
数据类型 属性名() [default 默认值]
注意:
1、注解属性默认没有默认值,如果注解中定义了无默认值的注解属性,则使用该注解时必须指定值。
2、如果注解属性名为value,使用该注解时可以直接赋值。
3、如果注解属性的数据类型为数组类型,赋多个值时必须使用{}括起来;但若只赋一个值,则无需使用{}。
实例:
public @interface Autowired {
String value() default "";
String[] names() default {};
}
//1、自定义注解中没有属性时:
//@Autowired
//@Autowired()
//2、自定义注解中有属性String value()时:
//@Autowired("lyy")
//@Autowired(value="lyy") //若属性名为value,则单独赋值时可以省略value
//3、自定义注解中有属性String value() default ""时:
//@Autowired
//@Autowired("lyy")
//@Autowired(value="lyy")
//4、自定义注解中有属性String value() default ""和String[] names()时:
//@Autowired(names="")
//@Autowired(names={""}) //对于数组类型的属性,数组中只有一个元素时,可以省略大括号
//@Autowired(names={"l","y","y"}) //对于数组类型的属性,数组中元素大于一时,必须添加大括号
//@Autowired(value="lyy",names="") //当同时为value属性和其他属性赋值时,value不能省略
//5、自定义注解中有属性String value() default ""和String[] names() default {}时:
//@Autowired
//@Autowired()
//@Autowired("lyy")
@Autowired(value="lyy",names="lyy")
public class Test{
}