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