3

我有以下类型的注释:

 public @interface A {
   String[] oneArr();
   String[][] twoArr();
 }

为什么第一种String[] oneArr();有效,第二种 String[][] twoArr();无效?

4

1 回答 1

5

来自JLS(Java 语言规范)

如果在注解类型中声明的方法的返回类型不是以下之一,则为编译时错误:原始类型、字符串、类、Class 的任何参数化调用、枚举类型(第 8.9 节)、注解类型或数组类型(第 10 节),其元素类型是上述类型之一。

这是来自 Eclipse java 编译器的错误消息,它更清楚一点:

注释属性 A.twoArr 的类型 String[][] 无效;只允许原始类型、字符串、类、注释、枚举或其一维数组

于 2013-10-02T10:55:09.510 回答