Java如何创建简单的注解?

元数据是一种将一些补充信息添加到源代码的方法。此信息称为注解,不会更改程序的运行方式。其他工具(例如源代码生成器)可以使用此元数据在运行时生成其他代码。或者它将由依赖注入框架(例如Spring框架)使用。

注解可以附加到类,方法等上。要创建注解,我们使用interface关键字并在其@前面添加符号。该@符号将告诉编译器它通过注解进行某些处理。

现在让我们来看一个简单注解的代码HelloAnnotation。

package org.nhooo.example.lang.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface HelloAnnotation {
    String value();
    String greetTo();
}

所有注解都扩展了java.lang.annotation.Annotation接口,这意味着它java.lang.annotation.Annotation是所有注解的超级接口

注解必须具有RetentionPolicy,它将成为注解的范围,此时注解将被忽略或丢弃。该值是RetentionPolicy.SOURCE,RetentionPolicy.CLASS和RetentionPolicy.RUNTIME。如果未定义保留策略,它将使用默认的保留策略RetentionPolicy.CLASS。

带有RetentionPolicy.SOURCE保留策略的注解将仅保留在源代码中,编译器在编译类时可使用该注解,然后将其丢弃。该RetentionPolicy.CLASS保留策略将存储在编译过程中的类文件的注解,但不会在运行时可用。和RetentionPolicy.RUNTIME保留策略将存储的编制过程中的类文件的注解,它还可在运行时提供给JVM。

在上面的示例中,您还看到HelloAnnotation拥有两个成员value()和greetTo()。注解中仅包含方法声明,而没有实现主体。