注解
- 注解:给计算机或编译器解释说明程序
- 注释:给程序员解释说明程序
注解作用的分类
- 编写文档:通过代码里标识的注解生成文档【生成DOC文档】
- 代码分析:通过代码里标识的注解 void eat();对代码进行分析【使用反射】
- 编译检查:让编译器实现基本的检查【override】
package annotation;
/**
* 注解演示JavaDoc
*
* @author liuhulin
* @version 1.0.0
* @since 1.5
*/
public class AnnotationTest {
/**
* 计算两数之和
*
* @param a 整数
* @param b 整数
* @return 返回两数之和
*/
public int add(int a, int b) {
return a + b;
}
}
JDK内置注解
- @Override:检测被注解标注的方法是否继承自父类
- @Deprecated: 将注解内容建议不要使用过时方法
- SupperPressWarnings(“all”):压制警告
自定义注解
- 格式:元注解(用来接实注解的注解)
public @interface 注解名称{}
- 注解本质上就是一个接口,默认继承Annotation接口
- 属性:接口中定义的抽象方法
- 属性的返回值类型
- 基本数据类型
- 字符串String
- 枚举
- 注解
- 以上类型的数组
- 定义了属性,在使用时需要给属性赋值
- 如果定义属性时,使用default关键字默认初始化值,则使用注解时可以不赋值
- 如果只有一个属性需要赋值,且属性的名称是value,则value可以省略,直接定义值即可
- 数组赋值时,使用{}包裹,如果数组中只有一个值,括号可以省略
元注解:用来描述注解的注解
- @Target:描述注解能够作用的位置
ElementType的取值
- TYPE:可以作用在类上
- METHOD:可以作用在方法上
- FIELD:可以作用在成员变量上
- @Retention:描述注解被保留的阶段
@Retention(RetentionPolicy.RUNTIME)
当前描述的注解可以被保留到class字节码文件中,并被JVM读取
- @Documented:描述注解是否被抽取到API文档中
- @Inherited:描述注解是否被子类继承