自定义注解
自定义注解使用很少,一般情况下都是用现成的注解。
一、如何自定义注解


发现定义的注解的声明使用的关键字:@interface,跟接口没有一点关系。
二、注解的内部
以@SuppressWarnings为例,发现内部:

这value是属性还是方法?
答案:看上去是无参数方法,实际上理解为一个成员变量,一个属性
无参数方法名字–》成员变量的名字
无参数方法的返回值–》成员变量的类型
这个参数叫 配置参数
无参数方法的类型:基本数据类型(八种),String,枚举,注解类型,还可以是以上类型对应的数组。
注意:如果只有一个成员变量的话,名字尽量叫value。
三、使用注解
1、使用注解的话,如果你定义了配置参数,就必须给配置参数进行赋值操作:
@MyAnnotation(value={"abc","def","hij"})
public class Person {
}
2、如果只有一个参数,并且这个参数的名字为value的话,那么value=可以省略不写。
@MyAnnotation({"abc","def","hij"})
public class Person {
}
3、如果你给配置参数设置默认的值了,那么使用的时候可以无需传值:
public @interface MyAnnotation2 {
String value() default "abc";
}
使用:
@MyAnnotation2
@MyAnnotation({"abc","def","hij"})
public class Person {
}
4、一个注解的内部是可以不定义配置参数的:
public @interface MyAnnotation3 {
}
内部没有定义配置参数的注解 –》 可以叫做标记
内部定义配置参数的注解 –》 元数据
5、注解的使用
现在只学习注解的大致技能点,具体怎么应用 后面慢慢学习。
正文完