概述
Annotation就是注解用来说明程序,时给计算机看的。(注释的话就是给程序Y看的)。
可以声明在包、类、方法、局部变量、方法参数等的前面,用来对这些元素进行说明注释。
作用
- 编写文档:通过代码里标识的元数据生成文档(生成doc文档)==(这个太有趣了,所以我就尝试了一波)
步骤按 /** 再按一下回车,就可以写注释,然后再cmd里面 用javadoc creatdoc.java,然后打开生成的index.htlm文件,就可以看到生成的doc文档了,代码如下
/**
* 注解javadoc演示
* @author Zhang
*@since 1.5
*
*/
public class creatdoc {
/**
* 计算两数的和
* @param a
* @param b
* @return 两数的和
*/
public int add(int a,int b) {
return a+b;
}
}
具体因为一些细节原因没用太成功(我透辽)
- 代码分析
- 编译检查
基本内置注解
@Override 它的作用是对覆盖超类中方法的方法进行标记,如果被标记的方法并没有实际覆盖超类中的方法,则编译器会发出错误警告。
@Deprecated 用该注解标注内容,表示已经过时
@SuppressWarnings 用来压制警告 @SuppressWarnings("all")传递参数all表示压制所有的警告
自定义Annotation类型
在定义Annotation类型时,@Retention设置为RetentionPolicy.RUNTIME,那么在程序运行时通过反射就可以获取到相关的Annotation信息,如获取构造方法、字段、方法的Annotation信息。
public @interface NoMemberAnnotation{
//属性列表
}
要求
1.属性的返回值(只能)有下列取值
基本数据类型、String、枚举、注解、以上类型的数组
2.再定义属性的时候可以用default关键字给属性默认值初始化
public @interface NoMemberAnnotation{
String value() default"默认值";
}
3.如果只有一个属性一般名称定义为value,且value可以省略
元注解
- @Targe 描述注解的注解(如果没用Targe表示适用于所有程序)
ElementType中的枚举常量
- @Retention 描述注解被保留的阶段
例如
@Retention(RetentionPolicy.RUNTIME);
- @Inherited 描述注解知否被子类继承