@interface 定义注解的关键字
用法:
@Target({ElementType.CONSTRUCTOR,ElementType.TYPE}) //作用域
@Retention(RetentionPolicy.RUNTIME) //该注解存在于什么时候
@Inherited //允许该注解被继承到子类,而方法和接口不会被继承
@Documented //生成javadoc时会包含注解
public @interface Abc{
String name(); //成员必须是无参数无异常
int age() default 18; //可以设置默认值
}
@Target 作用域(用在哪里)
CONSTRUCTOR 构造方法
LOCAL_VARIABLE 局部变量
FIELD 字段
METHOD 方法
PACKAGE 包
TYPE 类,接口
@Retention (注解存在于什么时候)
SOURCE 只在源码显示,编译后不存在
CLASS 源码和编译后都存在
RUNTIME 源码和编译后存在,运行时还可通过反射读取
自定义注解的使用
@Abc(name=”张三”,age=20)
public class Hello{
}
当注解只有一个成员时,成员为String value();
@Aba(“Hello”)
只需赋值即可,不需要名字和“=”
没有成员的注解为标识注解