前言:
整理下学习笔记,打好基础,daydayup!!!
注解
注解(Annotation)是java代码里的特殊标记。作用为:让其他程序根据注解信息来决定怎么执行该程序,如:@Override,@Test等。同时可以根据自己的需求自定义注解。
注解的原理
注解本质是一个接口,java中所有注解都是继承了Annotation接口。
自定义注解
自己定义注解
定义格式:
public @interface 注释名称{
public 属性类型 属性名() default 默认值;
}
例:
public @interface MyTest1 {
String value();
int no() default 23;
}
注:如果注解中只有一个value属性,使用注解时,value名称可以不写
示例如下:
注:@注解(...):其实就是一个实现类对象,实现了该注解以及Annotation接口。
元注解
修饰注解的注解称为元注解
Target
作用:声明被修饰的注解能在哪些位置使用
例:
@Target(ElementType.TYPE)//类,接口
TYPE | 类,接口 |
FIELD | 成员变量 |
METHOD | 成员方法 |
PARAMETER | 方法参数 |
CONSTRUCTOR | 构造器 |
LOCAL_VARIABLE | 局部变量 |
Retention
作用:声明注解的保留周期
例:
@Retention(RetentionPolicy.RUNTIME)//一直保留到运行阶段
SOURCE | 只作用在源码阶段,字节码文中不存在 |
CLASS | 保留到字节码文件阶段,运行阶段不存在 |
RUNTIME | 一直保留到运行阶段 |
注解的解析
判断类上,方法上,成员变量上是否存在注解,并把注解里的内容解析出来
和反射分析的用法差不多,有需要的可以看这里
java框架学习——反射概述及简易版框架搭建
解析注解的常用方法如下:
方法 | 说明 |
public Annotation[ ] getDeclaredAnnotations() | 获取当前对象上的注解 |
public T getDeclaredAnnotation(Class<T> annotationClass) | 获取指定的注解对象 |
public boolean isAnnotationPresent(Class<Annotation> annotationClass) | 判断当前对象上是否存在某个注解 |
示例如下:
案例:
需求:定义若干个方法,若是方法加了MyTest注解,那么触发该方法执行;没有MyTest注解的方法不执行
思路:1,定义一个自定义注解MyTest,使其注解方法,并使其一直存在;2,定义若干个方法,并在部分方法上加上@MyTest修饰,部分方法则不做处理;3,对方法进行注解解析,使带了注解的方法执行方法。
操作如下:
整理结束,撒花!!!!