注释String [] oneArr(); vs String [] [] twoArr(); 宣言

Mas*_*dul 3 java arrays annotations

我有以下类型的注释:

 public @interface A {
   String[] oneArr();
   String[][] twoArr();
 }
Run Code Online (Sandbox Code Playgroud)

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

Dre*_*nis 5

来自JLS(Java语言规范):

如果在注释类型中声明的方法的返回类型不是以下之一,则是编译时错误:基本类型,字符串,类,类的任何参数化调用,枚举类型(第8.9节),注释类型或数组类型(第10节),其元素类型是前面的类型之一.

以下是来自Eclipse java编译器的错误消息,它更加清晰:

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

  • 澄清:`其元素类型是前面的类型之一`意味着只允许基元,字符串,类,枚举或注释的数组,而不是数组的数组 - 这是`String [] []`的情况. (4认同)