理解: 添加在成员/类/方法/方法参数的上面
可以用来规范写法(不符合注解规范的会出现编译异常),
也可以通过设置注解属性,使用注解的位置必须初始化属性值,可以解析出属性值使用
格式:属性前面默认public abstract,和接口一样
元注解: 作用在注解上的注解(限制注解)
1: @Target 说明注解的使用位置
2: @Retention 说明注解的作用域
例:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Book {
String value();
}
解析注解:用来查找某些定义特定注解的方法.类.属性等
例:
//获取文件对象,并创建本类对象
Class<People> clazz = People.class;
People people = clazz.newInstance();
//判断方法中是否含有注解(使用isAnnotationPresent()方法),获取想要找到的方法.
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(MyAnnot.class)) {
//设置取消java语言访问检查(取消之后可以使用private修饰的方法)
method.setAccessible(true);
method.invoke(people);
//获取定义在方法上的注解
MyAnnot annotation = method.getAnnotation(MyAnnot.class);
//获取注解属性
annotation.属性();
}
}