自定义注解(Annotation)的基本元素
声明一个注解需要的东西
修饰符 访问修饰符必须为public,不写默认为public;
关键字 关键字为@interface;
JDK中有一些元注解,主要有@Target,@Retention,@Document,@Inherited用来修饰注解。
目录
自定义注解:
使用案例代码截图
四种元注解:
@Target详解
@Retention详解
@Document详解
@Inherited详解
自定义注解:
右键new class 创建一个Annotation的文件,用Java元注解标明即定义成功,如何标明接着往下看
package com.example.demo.annotation;
import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ZyjRunningLog {
}
图中的@Target用的类型是ElementType.METHOD,应用与方法之上。如果需要放在类上,就是ElementType.TYPE,按照对应的类型放在对应的地方,具体按照自己的实际情况来配置类型。往下看元注解里面有每一种具体类型的配置。
图中的@Retention用的类型是RetentionPolicy.RUNTIME,代表的是由JVM 加载,包含在类文件中,在运行时可以被获取到。往下看元注解里面有每一种具体类型的配置。
使用案例代码截图
四种元注解:
java为注解开发特准备的注解。
@Target详解
说明了注解所修饰的对象范围
Target类型 | 描述 |
ElementType.TYPE | 应用于类、接口(包括注解类型)、枚举 |
ElementType.FIELD | 应用于属性(包括枚举中的常量) |
ElementType.METHOD | 应用于方法 |
ElementType.PARAMETER | 应用于方法的形参 |
ElementType.CONSTRUCTOR | 应用于构造函数 |
ElementType.LOCAL_VARIABLE | 应用于局部变量 |
ElementType.ANNOTATION_TYPE | 应用于注解类型 |
ElementType.PACKAGE | 应用于包 |
ElementType.TYPE_PARAMETER | 1.8版本新增,应用于类型变量) |
ElementType.TYPE_USE | 1.8版本新增,应用于任何使用类型的语句中(例如声明语句、泛型和强制转换语句中的类型) |
@Retention详解
表明该注解的生命周期
生命周期类型 | 描述 |
RetentionPolicy.SOURCE | 编译时被丢弃,不包含在类文件中 |
RetentionPolicy.CLASS | JVM加载时被丢弃,包含在类文件中,默认值 |
RetentionPolicy.RUNTIME | 由JVM 加载,包含在类文件中,在运行时可以被获取到 |
@Document详解
表明该注解标记的元素可以被Javadoc 或类似的工具文档化,这个东西没有什么实际应用,了解即可
@Inherited详解
允许子类继承父类中的注解。即拥有此注解的元素其子类可以继承父类的注解。