/**
* 自定义注解,
* 注解本质上是一个接口,该接口默认继承java.lang.annotation.Annotation接口
* 元注解@Target表示该注解可以运用的范围,类,方法,字段
* ;@Retention(RetentionPolicy.RUNTIME)当前注解会保留到class文件,并且被jvm识别
* ;@Document 藐视该注解是否被抽取到api文档中
* ;@Inherited 该注解是否被子类继承
* @author cq
*/
@Target({ElementType.TYPE,ElementType.METHOD})
public @interface MyAnnotation {
/**
* 属性,抽象方法 ;
* 返回值只能是 1.基本类型
* 2.String
* 3.枚举
* 4.注解
* 5.以及以上类型的数组
*/
int value();//如果只有一个value,注解赋值时,value可以省略不写
int age() default 12;//如果想拥有默认值 在后面加上default关键字,可以不在使用注解时赋值
String[] names();//数组赋值比较特殊,用{}赋值,如果数组元素只有一个,可以省略{}
}
解析注解
1.获取注解定义的位置的对象(CLass,Method,Filed)。
例如:Class
2.获取注解对象。
MyAnnotaion myMynno=getAnnotation(MyAnnotation.class)//其实是生成了一个注解接口子类实现对象
3.调用注解中的抽象方法获取返回值。
int value=myAnno.value;
原文:https://www.cnblogs.com/staynight/p/15130767.html