JAVA中有关注解的笔记
JDK中预定义的一些注解: @Override:检测被该注解标注的方法是否是继承自父类(接口)的 @Deprecated:该注解标注的内容,表示已过时 @SuppressWarnings:压制警告。一般传递参数(“all”)
自定义注解:
-
*格式: 元注解(加在注解上的注解) public @interface 注解名称{ 属性列表; } *属性:接口中的抽象方法 要求: 1. 属性的返回值类型有下列取值: 基本数据类型 String 枚举 注解 以上类型的数组 2. 定义了属性,在使用时需要给属性赋值 * 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不赋值。 * 如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可。 * 数组赋值时,值使用{ }包裹。如果数组只有一个值,则{ }可以省略。 元注解:用于描述注解的注解 @Target:描述注解能够作用的位置 ElementType取值: TYPE:可以作用于类上 METHOD:可以作用于方法上 FIELD:可以作用于成员变量上 @Retention:描述注解被保留的时间 常用RetentionPolicy.RUNTIME RetentionPolicy.SOURCE:注解仅存在于源码中,在class字节码文件中不包含 RetentionPolicy.CLASS:默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得 RetentionPolicy.RUNTIME:注解会在class字节码文件中存在,在运行时可以通过反射获取到 @Documented:描述注解是否被抽取到api文档 @Inherited:描述注解是否被子类继承
在程序中使用(解析)注解的步骤:
- 获取注解的定义位置的对象 获取该类的字节码文件
- 获取指定的注解,getAnnotation(Class)
- 调用注解中的抽象方法获取配置的属性值(有对象既可调方法)