一.概念:说明程序的,给计算机看的
概念描述:
1.jdk1.5之后的新特性
2.用来说明程序的
3.使用注解:@注解名称
作用分类:
1.编写文档:通过代码里表识的注解生成文档(生成doc文档)
2.代码分析:通过代码里表识的注解进行代码分析(使用反射)
3.编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【override】
JDK中预定义的一些注解
1.@Override:检测被该注解标注的方法是否继承自(父类)接口的
2.@Deprecated:该注解标识的内容表示已过时
3.@SuppressWarnings:压制警告的
一般传递参数all @SuppressWarnings("all")
复制代码
二.自定义注解
格式: 元注解
public @interface 注解名称{}
本质: 注解本质上就是一个接口,该接口默认继承Annotation接口(自定义一注解,编译javac,然后反编译javap)
public interface 注解名称 extends java.lang.annotation.Annotation{}
属性:接口中的抽象方法
要求:
1.属性的返回值类型有以下取值
基本数据类型
String
枚举
注解
以上类型的数组
2.定义了属性,在使用的时候要给属性赋值
1.如果定义属性的时候使用default关键字给属性默认初始化值,则使用注解的时候可以不需要给属性赋值
2.如果只有一个属性要赋值,其名称是value,则value可以省掉,直接定义值即可
3.数组赋值时,使用{}包裹,如果数组中只有一个值,则可以省掉{}
元注解:用于描述注解的注解
@target:表示描述注解能够作用的位置
@Retention:表示描述注解被保留的一个阶段(源码,class,runtime)
@Documented:描述注解是否抽取到api文档中
@Inherited:描述注解是否被子类继承
在程序中使用(解析)注解:获取注解中定义的属性值
1.获取注解定义的位置的对象(Class,Method,Field)
2.获取指定的注解的对象:getAnnotation(注解.class)
3.调用注解中的抽象方法获取属性值
复制代码
三.案列(写一个bug检查的注解)
1.先定义一个注解类
复制代码
2.在定义一个注解的bug测试类
复制代码
3.测试注解功能的执行类
复制代码
4.测试结果
复制代码