【1】自定义注解很少,一般用现成的注解
【2】如何自定义注解:
注意:此处的@interface跟接口没有任何关系
【3】自定义注解内部
以@SuppressWarnings为例,发现内部
那么其中的value是属性还是方法?
答案:看上去是无参数方法,实际上理解为一个成员变量,一个属性
无参数方法名字(value())-->成员变量的名字
无参数方法的返回值(String[])-->成员变量的类型
该参数叫配置参数
无参数方法的类型:基本数据类型(8种),String,枚举,注解类型,还可以是以上类型对应的数组
约定俗成:如果只有一个成员变量的话,名字尽量叫value
【4】使用注解:
(1)使用注解的话,如果你定义了配置参数,就必须赋值操作
@MyAnnotation(value= {"abc","def","ghi"})
(2)如果只有一个参数,并且这个参数的名字叫value的话,那么value=可以省略不写
@MyAnnotation({"abc","def","ghi"})
(3)如果你给配置参数设置默认的值了,那么使用的时候无需传值:
public @interface MyAnnotation2 {
String value() default "abc";
}
(4)一个注解内部是可以不定义配置参数的
内部没有定义配置参数的注解可以叫做标记
内部定义配置参数的注解叫元数据