【注解】@Retention 元注解

@Retention 是Java中的元注解之一,用于指定注解的保留策略。元注解是用于注解其他注解的注解,@Retention 的目的是告诉编译器如何处理注解。

@Retention 有三个取值,分别是 RetentionPolicy.SOURCERetentionPolicy.CLASSRetentionPolicy.RUNTIME

RetentionPolicy.SOURCE

  • 注解仅在源代码级别保留,在编译时会被丢弃。这意味着在编译后的类文件(.class 文件)中不会包含该注解信息。这种保留策略通常用于编写编译时的工具。
    @Retention(RetentionPolicy.SOURCE) 
    public @interface MyAnnotation {
           // annotation details 
    }
    

RetentionPolicy.CLASS

  • 注解在编译时保留,会被包含在编译后的类文件中,但在运行时会被丢弃。这是默认的保留策略。
    @Retention(RetentionPolicy.CLASS) 
    public @interface MyAnnotation {
           // annotation details 
    }
    

RetentionPolicy.RUNTIME

  • 注解在编译时和运行时都保留,因此可以通过反射在运行时获取注解的信息。这种保留策略通常用于自定义注解,需要在运行时处理

    @Retention(RetentionPolicy.RUNTIME) 
    public @interface MyAnnotation {
           // annotation details 
    }
    

    在自定义注解时,通常会选择 RetentionPolicy.RUNTIME,以便在运行时能够通过反射获取注解信息。例如:

    @Retention(RetentionPolicy.RUNTIME) 
    public @interface RpcApiEntry {
           // annotation details
    }
    

在处理自定义注解时,要根据具体的需求选择合适的保留策略。

你可能感兴趣的:(JAVA杂项,java,spring)