自定义注解的语法要求
@Target({ElementType.METHOD}) // 作用域 CONSTRUCTOR FIELD LOCAL_VARIABLE METHOD PACKAGE PARAMETER TYPE
@Retention(RetentionPolicy.RUNTIME)//生命周期,source,class,runtime,
@Inherited //允许子类继承
@Documented//javadoc 可以包含
Public @interface Description{
String desc(); //必须无参数和无异常
//基本类型 和 String,Class,Annotation,Enumeration
//如果只有一个成员,必须取名value(),使用时可以忽略成员名和赋值号(=)
//可以没有成员,叫做标识注解
Int age() default 18;
//default 指定默认值
}
元注解
见上
使用自定义注解
解析注解
通过反射获取类,函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑。
1. 使用类加载器加载类
2. 找到类上面的注解
3. 拿到注解实例
4. 找到方法上的注解