Java元注解有哪些?如何定义一个注解?

元注解就是加到注解上的注解,它的目的是解释、说明其他普通注解。元注解有@Retention、@Documented、@Target、@Inherited、@Repeatable共5种。

1.@Retention 元注解@Retention应用到一个注解时,说明该注解的存活时间。它的取值包括RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME。RetentionPolicy.SOURCE表明注解只在源码阶段保留,在编译器进行编译时被丢弃;RetentionPolicy.CLASS表明注解被保留到编译进行的时候,而不会被加载到JVM中;RetentionPolicy.RUNTIME表明注解可以保留到程序运行的时候,它会被加载进入JVM中,在程序运行时可以获取到它们。

2.@Target 元注解@Target表示注解用于什么地方,如类型、方法和域等。元注解@Target的取值包括ElementType.FIELD、ElementType.METHOD、ElementType.PARAMETER、ElementType.CONSTRUCTOR、ElementType.LOCAL_VARIABLE、ElementType.TYPE、ElementType.ANNOTATION_TYPE、ElementType.PACKAGE。 ElementType.FIELD表示对字段、枚举常量的注解, ElementType.METHOD表示对方法的注解, ElementType.PARAMETER表示对方法参数的注解, ElementType.CONSTRUCTOR表示对构造函数的注解, ElementType.LOCAL_VARIABLE表示对局部变量的注解, ElementType.ANNOTATION_TYPE表示对注解类型的注解, ElementType.PACKAGE表示对包的注解, ElementType.TYPE表示对接口、类、枚举、注解等任意类型的注解。

3.@Document 元注解@Documented表示注解内容会被Javadoc工具提取成文档,文档内容会因为注解内容的不同而不同。

4.@Inherited 被元注解@Inherited注解过的注解作用于父类后,子类会自动继承父类的注解。

5.元注解@Repeatable是在Java1.8中引入的注解,被注解后的普通注解可以被重复多次作用于一个类并传入不同的参数

注解:

@Retention(RetentionPolicy.RUNTIME)
@Target({
          
   ElementType.METHOD,ElementType.TYPE})
public @interface StuCaseInfo {
          
   
     String owner() default "null;";
     String caseName() default "测试用例名称";
     String apiUrl() default "接口url";
}
经验分享 程序员 微信小程序 职场和发展