Java中注释的元素可以是不同注释的数组吗?

时间:2018-02-11 10:19:35

标签: java arrays annotations

我正在尝试在Java中创建自定义注释,问题是是否可以使用“注释数组”类型的元素创建自定义注释,并且此数组中的每个元素都来自不同类型。

例如:

@MyCustomArrayOfAnnotation({@MyCustomAnnotationType1, @MyCustomAnnotationType2})

如果可能,我该如何声明此自定义注释?

1 个答案:

答案 0 :(得分:2)

这是不可能的。

Java Language Specification, section 9.6.1表示注释元素/成员可以是以下类型:

  • 原始类型
  • String
  • Class
  • 枚举类型
  • 注释类型
  • 一种数组类型,其组件类型是上述类型之一。

这表明注释可能包含注释数组。

但是,注释中没有子类型。因此,注释只能包含同构数组,而不是异构数组。

同构数组(允许)的一个例子是

@MyCustomArrayOfAnnotation({@MyCustomAnnotationType1("a"), @MyCustomAnnotationType1("b")})

异构数组(不允许)的示例就是您的示例:

@MyCustomArrayOfAnnotation({@MyCustomAnnotationType1, @MyCustomAnnotationType2})