注解是干什么的
注解是用来标注类,方法,Field的,它是一种附加的信息,程序可以读取这些附加的信息然后加以处理。
三种注解
编译阶段,class文件阶段,运行阶段。就是说注解到什么时候还起作用。运行阶段就是到了运行阶段还可以起作用
元注解(注解在注解之上的注解)
@Retention(RetentionPolicy.CLASS) //用于规定被注解的注解有效时间一直持续到什么时候
@Target() //用于规定被注解的注解能注解谁,类,方法,成员变量...
@Documented //用于规定被注解的注解将来生成文档的时候,会不会被包含到文档中
@Inherited //用于规定被注解的注解是否可以被继承关系继承下去,只有当@Target为class的时候才有用
自定义注解
public @interface Test{
//成员
String name() default "abcd";
int age() default 18;
String message();
}
使用:
@Test(name="dhairoot",age=21,message="hello annotation")
有默认值的Field可以不赋值
@Test(name="dhairoot",message="aha")
如果只有一个Field value,
eg.
public @interface Test{
String value();
}
// 调用的时候可以省略这个value
@Test(value="abcedfg") 可以省略为 @Test("abcdefg")
读取注解:
用反射