在Java中,注解的成员类型是有限的,例如下面的示例:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
/**
* Returns an array of the kinds of elements an annotation type
* can be applied to.
* @return an array of the kinds of elements an annotation type
* can be applied to
*/
ElementType[] value();
}
根据官方给出的说明,注解的成员方法返回的类型必须是以下类型,否则会发生编译错误:
- 原生类型
- String
- Class
- 枚举类型
- 注解类型
- 以上几种类型的数组
附:
官方说明 https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.6.1