8.4.2 创建注解类型

除了标准库提供的注解类型外,开发人员可以根据需要创建程序中要用的注解类型。创建注解类型一般有两个要素:第一个是确定注解中包含的元素,即可能的配置选项;另外一个是确定注解类型的元注解。代码清单8-23给出了一个名为Author的注解类型,用来表示作者信息。该注解类型中的配置元素包括作者的姓名、电子邮件地址和是否启用电子邮件通知,其中enableEmailNotification通过default关键词声明默认值为true。在该注解类型上,通过@Target声明了该注解类型只适用于源代码中的类型声明,通过@Retention声明了该注解只保留在源代码中,不会在字节代码中出现。

代码清单8-23 注解类型示例


@Target({ElementType.TYPE})

@Retention(RetentionPolicy.SOURCE)

public@interface Author{

String name();

String email();

boolean enableEmailNotification()default true;

}


在注解类型的声明中,除了表示配置元素的方法之外,还可以包含常量声明、类和接口声明、枚举类型声明及注解类型声明。代码清单8-24给出了在注解类型声明中使用枚举类型的示例。由于注解类型Employee只包含一个元素,使用value作为该元素的名称。

代码清单8-24 注解类型声明中使用枚举类型的示例


@Target(ElementType.TYPE)

public@interface Employee{

enum EMPLOYEE_TYPE{REGULAR, CONTRACT};

EMPLOYEE_TYPE value();

}